Skip to content

Commit 37db2b1

Browse files
committed
fix: hai-x suggestion
1 parent 68cd250 commit 37db2b1

File tree

6 files changed

+173
-121
lines changed

6 files changed

+173
-121
lines changed

packages/next/src/bundles/webpack/packages/HotModuleReplacement.runtime.js

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -354,38 +354,50 @@ module.exports = function () {
354354
};
355355

356356
var outdatedModules = [];
357-
results.forEach(function (result) {
358-
if (result.apply) {
359-
var modules = result.apply(reportError);
360-
if (modules) {
361-
for (var i = 0; i < modules.length; i++) {
362-
outdatedModules.push(modules[i]);
363-
}
364-
}
365-
}
366-
});
367357

368-
return Promise.all([disposePromise, applyPromise]).then(function () {
369-
// handle errors in accept handlers and self accepted module load
370-
if (error) {
371-
return setStatus("fail").then(function () {
372-
throw error;
373-
});
374-
}
358+
var onAccepted = function () {
359+
return Promise.all([disposePromise, applyPromise]).then(function () {
360+
// handle errors in accept handlers and self accepted module load
361+
if (error) {
362+
return setStatus("fail").then(function () {
363+
throw error;
364+
});
365+
}
375366

376-
if (queuedInvalidatedModules) {
377-
return internalApply(options).then(function (list) {
378-
outdatedModules.forEach(function (moduleId) {
379-
if (list.indexOf(moduleId) < 0) list.push(moduleId);
367+
if (queuedInvalidatedModules) {
368+
return internalApply(options).then(function (list) {
369+
outdatedModules.forEach(function (moduleId) {
370+
if (list.indexOf(moduleId) < 0) list.push(moduleId);
371+
});
372+
return list;
380373
});
381-
return list;
382-
});
383-
}
374+
}
384375

385-
return setStatus("idle").then(function () {
386-
return outdatedModules;
376+
return setStatus("idle").then(function () {
377+
return outdatedModules;
378+
});
387379
});
388-
});
380+
};
381+
382+
return Promise.all(
383+
results
384+
.filter(function (result) {
385+
return result.apply;
386+
})
387+
.map(function (result) {
388+
return result.apply(reportError);
389+
})
390+
)
391+
.then(function (applyResults) {
392+
applyResults.forEach(function (modules) {
393+
if (modules) {
394+
for (var i = 0; i < modules.length; i++) {
395+
outdatedModules.push(modules[i]);
396+
}
397+
}
398+
});
399+
})
400+
.then(onAccepted);
389401
}
390402

391403
function applyInvalidatedModules() {

packages/next/src/bundles/webpack/packages/JavascriptHotModuleReplacement.runtime.js

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ module.exports = function () {
281281
}
282282
},
283283
apply: function (reportError) {
284+
var acceptPromises = [];
284285
// insert new code
285286
for (var updateModuleId in appliedUpdate) {
286287
if ($hasOwnProperty$(appliedUpdate, updateModuleId)) {
@@ -317,8 +318,9 @@ module.exports = function () {
317318
}
318319
}
319320
for (var k = 0; k < callbacks.length; k++) {
321+
var result;
320322
try {
321-
callbacks[k].call(null, moduleOutdatedDependencies);
323+
result = callbacks[k].call(null, moduleOutdatedDependencies);
322324
} catch (err) {
323325
if (typeof errorHandlers[k] === "function") {
324326
try {
@@ -355,54 +357,63 @@ module.exports = function () {
355357
}
356358
}
357359
}
360+
if (result && typeof result.then === "function") {
361+
acceptPromises.push(result);
362+
}
358363
}
359364
}
360365
}
361366
}
362367

363-
// Load self accepted modules
364-
for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
365-
var item = outdatedSelfAcceptedModules[o];
366-
var moduleId = item.module;
367-
try {
368-
item.require(moduleId);
369-
} catch (err) {
370-
if (typeof item.errorHandler === "function") {
371-
try {
372-
item.errorHandler(err, {
373-
moduleId: moduleId,
374-
module: $moduleCache$[moduleId]
375-
});
376-
} catch (err1) {
368+
var onAccepted = function () {
369+
// Load self accepted modules
370+
for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
371+
var item = outdatedSelfAcceptedModules[o];
372+
var moduleId = item.module;
373+
try {
374+
item.require(moduleId);
375+
} catch (err) {
376+
if (typeof item.errorHandler === "function") {
377+
try {
378+
item.errorHandler(err, {
379+
moduleId: moduleId,
380+
module: $moduleCache$[moduleId]
381+
});
382+
} catch (err1) {
383+
if (options.onErrored) {
384+
options.onErrored({
385+
type: "self-accept-error-handler-errored",
386+
moduleId: moduleId,
387+
error: err1,
388+
originalError: err
389+
});
390+
}
391+
if (!options.ignoreErrored) {
392+
reportError(err1);
393+
reportError(err);
394+
}
395+
}
396+
} else {
377397
if (options.onErrored) {
378398
options.onErrored({
379-
type: "self-accept-error-handler-errored",
399+
type: "self-accept-errored",
380400
moduleId: moduleId,
381-
error: err1,
382-
originalError: err
401+
error: err
383402
});
384403
}
385404
if (!options.ignoreErrored) {
386-
reportError(err1);
387405
reportError(err);
388406
}
389407
}
390-
} else {
391-
if (options.onErrored) {
392-
options.onErrored({
393-
type: "self-accept-errored",
394-
moduleId: moduleId,
395-
error: err
396-
});
397-
}
398-
if (!options.ignoreErrored) {
399-
reportError(err);
400-
}
401408
}
402409
}
403-
}
410+
};
404411

405-
return outdatedModules;
412+
return Promise.all(acceptPromises)
413+
.then(onAccepted)
414+
.then(function () {
415+
return outdatedModules;
416+
});
406417
}
407418
};
408419
}

packages/next/src/compiled/webpack/HotModuleReplacement.runtime.js

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -354,38 +354,50 @@ module.exports = function () {
354354
};
355355

356356
var outdatedModules = [];
357-
results.forEach(function (result) {
358-
if (result.apply) {
359-
var modules = result.apply(reportError);
360-
if (modules) {
361-
for (var i = 0; i < modules.length; i++) {
362-
outdatedModules.push(modules[i]);
363-
}
364-
}
365-
}
366-
});
367357

368-
return Promise.all([disposePromise, applyPromise]).then(function () {
369-
// handle errors in accept handlers and self accepted module load
370-
if (error) {
371-
return setStatus("fail").then(function () {
372-
throw error;
373-
});
374-
}
358+
var onAccepted = function () {
359+
return Promise.all([disposePromise, applyPromise]).then(function () {
360+
// handle errors in accept handlers and self accepted module load
361+
if (error) {
362+
return setStatus("fail").then(function () {
363+
throw error;
364+
});
365+
}
375366

376-
if (queuedInvalidatedModules) {
377-
return internalApply(options).then(function (list) {
378-
outdatedModules.forEach(function (moduleId) {
379-
if (list.indexOf(moduleId) < 0) list.push(moduleId);
367+
if (queuedInvalidatedModules) {
368+
return internalApply(options).then(function (list) {
369+
outdatedModules.forEach(function (moduleId) {
370+
if (list.indexOf(moduleId) < 0) list.push(moduleId);
371+
});
372+
return list;
380373
});
381-
return list;
382-
});
383-
}
374+
}
384375

385-
return setStatus("idle").then(function () {
386-
return outdatedModules;
376+
return setStatus("idle").then(function () {
377+
return outdatedModules;
378+
});
387379
});
388-
});
380+
};
381+
382+
return Promise.all(
383+
results
384+
.filter(function (result) {
385+
return result.apply;
386+
})
387+
.map(function (result) {
388+
return result.apply(reportError);
389+
})
390+
)
391+
.then(function (applyResults) {
392+
applyResults.forEach(function (modules) {
393+
if (modules) {
394+
for (var i = 0; i < modules.length; i++) {
395+
outdatedModules.push(modules[i]);
396+
}
397+
}
398+
});
399+
})
400+
.then(onAccepted);
389401
}
390402

391403
function applyInvalidatedModules() {

packages/next/src/compiled/webpack/JavascriptHotModuleReplacement.runtime.js

Lines changed: 43 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ module.exports = function () {
281281
}
282282
},
283283
apply: function (reportError) {
284+
var acceptPromises = [];
284285
// insert new code
285286
for (var updateModuleId in appliedUpdate) {
286287
if ($hasOwnProperty$(appliedUpdate, updateModuleId)) {
@@ -317,8 +318,9 @@ module.exports = function () {
317318
}
318319
}
319320
for (var k = 0; k < callbacks.length; k++) {
321+
var result;
320322
try {
321-
callbacks[k].call(null, moduleOutdatedDependencies);
323+
result = callbacks[k].call(null, moduleOutdatedDependencies);
322324
} catch (err) {
323325
if (typeof errorHandlers[k] === "function") {
324326
try {
@@ -355,54 +357,63 @@ module.exports = function () {
355357
}
356358
}
357359
}
360+
if (result && typeof result.then === "function") {
361+
acceptPromises.push(result);
362+
}
358363
}
359364
}
360365
}
361366
}
362367

363-
// Load self accepted modules
364-
for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
365-
var item = outdatedSelfAcceptedModules[o];
366-
var moduleId = item.module;
367-
try {
368-
item.require(moduleId);
369-
} catch (err) {
370-
if (typeof item.errorHandler === "function") {
371-
try {
372-
item.errorHandler(err, {
373-
moduleId: moduleId,
374-
module: $moduleCache$[moduleId]
375-
});
376-
} catch (err1) {
368+
var onAccepted = function () {
369+
// Load self accepted modules
370+
for (var o = 0; o < outdatedSelfAcceptedModules.length; o++) {
371+
var item = outdatedSelfAcceptedModules[o];
372+
var moduleId = item.module;
373+
try {
374+
item.require(moduleId);
375+
} catch (err) {
376+
if (typeof item.errorHandler === "function") {
377+
try {
378+
item.errorHandler(err, {
379+
moduleId: moduleId,
380+
module: $moduleCache$[moduleId]
381+
});
382+
} catch (err1) {
383+
if (options.onErrored) {
384+
options.onErrored({
385+
type: "self-accept-error-handler-errored",
386+
moduleId: moduleId,
387+
error: err1,
388+
originalError: err
389+
});
390+
}
391+
if (!options.ignoreErrored) {
392+
reportError(err1);
393+
reportError(err);
394+
}
395+
}
396+
} else {
377397
if (options.onErrored) {
378398
options.onErrored({
379-
type: "self-accept-error-handler-errored",
399+
type: "self-accept-errored",
380400
moduleId: moduleId,
381-
error: err1,
382-
originalError: err
401+
error: err
383402
});
384403
}
385404
if (!options.ignoreErrored) {
386-
reportError(err1);
387405
reportError(err);
388406
}
389407
}
390-
} else {
391-
if (options.onErrored) {
392-
options.onErrored({
393-
type: "self-accept-errored",
394-
moduleId: moduleId,
395-
error: err
396-
});
397-
}
398-
if (!options.ignoreErrored) {
399-
reportError(err);
400-
}
401408
}
402409
}
403-
}
410+
};
404411

405-
return outdatedModules;
412+
return Promise.all(acceptPromises)
413+
.then(onAccepted)
414+
.then(function () {
415+
return outdatedModules;
416+
});
406417
}
407418
};
408419
}

packages/next/src/compiled/webpack/bundle5.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/next/taskfile.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2184,7 +2184,13 @@ export async function ncc_webpack_bundle5(task, opts) {
21842184
packageName: 'webpack',
21852185
bundleName: 'webpack',
21862186
customEmit(path) {
2187-
if (path.endsWith('.runtime.js')) return `'./${basename(path)}'`
2187+
if (
2188+
/HotModuleReplacement\.runtime|JavascriptHotModuleReplacement\.runtime/.test(
2189+
path
2190+
)
2191+
) {
2192+
return `'./${basename(path)}'`
2193+
}
21882194
},
21892195
externals: bundleExternals,
21902196
target: 'es5',

0 commit comments

Comments
 (0)