webpack 5.14.0 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (71) hide show
  1. package/bin/webpack.js +0 -0
  2. package/hot/lazy-compilation-node.js +38 -0
  3. package/hot/lazy-compilation-web.js +74 -0
  4. package/lib/AutomaticPrefetchPlugin.js +14 -7
  5. package/lib/CacheFacade.js +1 -0
  6. package/lib/ChunkGraph.js +132 -19
  7. package/lib/CodeGenerationResults.js +43 -8
  8. package/lib/Compilation.js +253 -149
  9. package/lib/Compiler.js +7 -2
  10. package/lib/ContextModule.js +2 -2
  11. package/lib/Dependency.js +1 -7
  12. package/lib/ExportsInfo.js +23 -5
  13. package/lib/ExternalModuleFactoryPlugin.js +46 -3
  14. package/lib/FileSystemInfo.js +192 -137
  15. package/lib/HotModuleReplacementPlugin.js +76 -29
  16. package/lib/IgnoreErrorModuleFactory.js +39 -0
  17. package/lib/Module.js +2 -3
  18. package/lib/NormalModuleFactory.js +27 -8
  19. package/lib/Template.js +32 -23
  20. package/lib/WebpackIsIncludedPlugin.js +85 -0
  21. package/lib/WebpackOptionsApply.js +27 -5
  22. package/lib/cache/PackFileCacheStrategy.js +5 -1
  23. package/lib/config/defaults.js +18 -18
  24. package/lib/config/normalization.js +44 -9
  25. package/lib/debug/ProfilingPlugin.js +20 -1
  26. package/lib/dependencies/AMDDefineDependency.js +1 -1
  27. package/lib/dependencies/AMDPlugin.js +6 -7
  28. package/lib/dependencies/CommonJsImportsParserPlugin.js +43 -1
  29. package/lib/dependencies/CommonJsPlugin.js +1 -6
  30. package/lib/dependencies/ContextDependencyHelpers.js +3 -2
  31. package/lib/dependencies/ExportsInfoDependency.js +0 -20
  32. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +1 -2
  33. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +0 -29
  34. package/lib/dependencies/HarmonyImportDependency.js +0 -41
  35. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +2 -3
  36. package/lib/dependencies/HarmonyImportSpecifierDependency.js +2 -36
  37. package/lib/dependencies/HarmonyModulesPlugin.js +2 -2
  38. package/lib/dependencies/ImportPlugin.js +1 -6
  39. package/lib/dependencies/JsonExportsDependency.js +0 -1
  40. package/lib/dependencies/ModuleDecoratorDependency.js +0 -1
  41. package/lib/dependencies/NullDependency.js +0 -8
  42. package/lib/dependencies/ProvidedDependency.js +0 -1
  43. package/lib/dependencies/StaticExportsDependency.js +0 -12
  44. package/lib/dependencies/SystemPlugin.js +0 -4
  45. package/lib/dependencies/URLDependency.js +45 -3
  46. package/lib/dependencies/URLPlugin.js +33 -7
  47. package/lib/dependencies/WebpackIsIncludedDependency.js +80 -0
  48. package/lib/hmr/LazyCompilationPlugin.js +348 -0
  49. package/lib/hmr/lazyCompilationBackend.js +86 -0
  50. package/lib/javascript/JavascriptModulesPlugin.js +4 -3
  51. package/lib/javascript/JavascriptParser.js +20 -5
  52. package/lib/library/AssignLibraryPlugin.js +13 -4
  53. package/lib/library/EnableLibraryPlugin.js +12 -0
  54. package/lib/optimize/ConcatenatedModule.js +0 -12
  55. package/lib/optimize/InnerGraph.js +32 -0
  56. package/lib/optimize/SplitChunksPlugin.js +4 -1
  57. package/lib/serialization/ObjectMiddleware.js +7 -5
  58. package/lib/sharing/ProvideSharedModule.js +1 -1
  59. package/lib/sharing/ShareRuntimeModule.js +2 -2
  60. package/lib/stats/DefaultStatsPresetPlugin.js +1 -0
  61. package/lib/util/MapHelpers.js +22 -0
  62. package/lib/util/binarySearchBounds.js +86 -0
  63. package/lib/util/createHash.js +13 -7
  64. package/lib/util/internalSerializables.js +2 -0
  65. package/lib/util/processAsyncTree.js +61 -0
  66. package/lib/util/runtime.js +12 -1
  67. package/package.json +3 -3
  68. package/schemas/WebpackOptions.json +330 -140
  69. package/schemas/plugins/container/ContainerPlugin.json +2 -1
  70. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -1
  71. package/types.d.ts +320 -121
@@ -7,12 +7,13 @@
7
7
 
8
8
  const util = require("util");
9
9
  const ExternalModule = require("./ExternalModule");
10
- const { resolveByProperty } = require("./util/cleverMerge");
10
+ const { resolveByProperty, cachedSetProperty } = require("./util/cleverMerge");
11
11
 
12
12
  /** @typedef {import("../declarations/WebpackOptions").Externals} Externals */
13
13
  /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
14
14
 
15
15
  const UNSPECIFIED_EXTERNAL_TYPE_REGEXP = /^[a-z0-9]+ /;
16
+ const EMPTY_RESOLVE_OPTIONS = {};
16
17
 
17
18
  // TODO webpack 6 remove this
18
19
  const callDeprecatedExternals = util.deprecate(
@@ -171,14 +172,56 @@ class ExternalModuleFactoryPlugin {
171
172
  cb
172
173
  );
173
174
  } else {
174
- externals(
175
+ const promise = externals(
175
176
  {
176
177
  context,
177
178
  request: dependency.request,
178
- contextInfo
179
+ contextInfo,
180
+ getResolve: options => (context, request, callback) => {
181
+ const dependencyType = dependency.category || "";
182
+ const resolveContext = {
183
+ fileDependencies: data.fileDependencies,
184
+ missingDependencies: data.missingDependencies,
185
+ contextDependencies: data.contextDependencies
186
+ };
187
+ let resolver = normalModuleFactory.getResolver(
188
+ "normal",
189
+ dependencyType
190
+ ? cachedSetProperty(
191
+ data.resolveOptions || EMPTY_RESOLVE_OPTIONS,
192
+ "dependencyType",
193
+ dependencyType
194
+ )
195
+ : data.resolveOptions
196
+ );
197
+ if (options) resolver = resolver.withOptions(options);
198
+ if (callback) {
199
+ resolver.resolve(
200
+ {},
201
+ context,
202
+ request,
203
+ resolveContext,
204
+ callback
205
+ );
206
+ } else {
207
+ return new Promise((resolve, reject) => {
208
+ resolver.resolve(
209
+ {},
210
+ context,
211
+ request,
212
+ resolveContext,
213
+ (err, result) => {
214
+ if (err) reject(err);
215
+ else resolve(result);
216
+ }
217
+ );
218
+ });
219
+ }
220
+ }
179
221
  },
180
222
  cb
181
223
  );
224
+ if (promise && promise.then) promise.then(r => cb(null, r), cb);
182
225
  }
183
226
  return;
184
227
  } else if (typeof externals === "object") {
@@ -11,6 +11,7 @@ const AsyncQueue = require("./util/AsyncQueue");
11
11
  const createHash = require("./util/createHash");
12
12
  const { join, dirname, relative } = require("./util/fs");
13
13
  const makeSerializable = require("./util/makeSerializable");
14
+ const processAsyncTree = require("./util/processAsyncTree");
14
15
 
15
16
  /** @typedef {import("./WebpackError")} WebpackError */
16
17
  /** @typedef {import("./logging/Logger").Logger} Logger */
@@ -18,26 +19,19 @@ const makeSerializable = require("./util/makeSerializable");
18
19
 
19
20
  const supportsEsm = +process.versions.modules >= 83;
20
21
 
21
- const resolveContext = createResolver({
22
- resolveToContext: true,
23
- exportsFields: []
24
- });
25
- const resolve = createResolver({
26
- extensions: [".js", ".json", ".node"],
27
- conditionNames: ["require"]
28
- });
29
-
30
22
  let FS_ACCURACY = 2000;
31
23
 
32
24
  const EMPTY_SET = new Set();
33
25
 
34
- const RBDT_RESOLVE = 0;
35
- const RBDT_RESOLVE_DIRECTORY = 1;
36
- const RBDT_RESOLVE_FILE = 2;
37
- const RBDT_DIRECTORY = 3;
38
- const RBDT_FILE = 4;
39
- const RBDT_DIRECTORY_DEPENDENCIES = 5;
40
- const RBDT_FILE_DEPENDENCIES = 6;
26
+ const RBDT_RESOLVE_CJS = 0;
27
+ const RBDT_RESOLVE_ESM = 1;
28
+ const RBDT_RESOLVE_DIRECTORY = 2;
29
+ const RBDT_RESOLVE_CJS_FILE = 3;
30
+ const RBDT_RESOLVE_ESM_FILE = 4;
31
+ const RBDT_DIRECTORY = 5;
32
+ const RBDT_FILE = 6;
33
+ const RBDT_DIRECTORY_DEPENDENCIES = 7;
34
+ const RBDT_FILE_DEPENDENCIES = 8;
41
35
 
42
36
  const INVALID = Symbol("invalid");
43
37
 
@@ -1056,6 +1050,26 @@ class FileSystemInfo {
1056
1050
  this.contextHashQueue.add(path, callback);
1057
1051
  }
1058
1052
 
1053
+ _createBuildDependenciesResolvers() {
1054
+ const resolveContext = createResolver({
1055
+ resolveToContext: true,
1056
+ exportsFields: [],
1057
+ fileSystem: this.fs
1058
+ });
1059
+ const resolveCjs = createResolver({
1060
+ extensions: [".js", ".json", ".node"],
1061
+ conditionNames: ["require", "node"],
1062
+ fileSystem: this.fs
1063
+ });
1064
+ const resolveEsm = createResolver({
1065
+ extensions: [".js", ".json", ".node"],
1066
+ fullySpecified: true,
1067
+ conditionNames: ["import", "node"],
1068
+ fileSystem: this.fs
1069
+ });
1070
+ return { resolveContext, resolveEsm, resolveCjs };
1071
+ }
1072
+
1059
1073
  /**
1060
1074
  * @param {string} context context directory
1061
1075
  * @param {Iterable<string>} deps dependencies
@@ -1063,11 +1077,21 @@ class FileSystemInfo {
1063
1077
  * @returns {void}
1064
1078
  */
1065
1079
  resolveBuildDependencies(context, deps, callback) {
1080
+ const {
1081
+ resolveContext,
1082
+ resolveEsm,
1083
+ resolveCjs
1084
+ } = this._createBuildDependenciesResolvers();
1085
+
1066
1086
  /** @type {Set<string>} */
1067
1087
  const files = new Set();
1068
1088
  /** @type {Set<string>} */
1089
+ const fileSymlinks = new Set();
1090
+ /** @type {Set<string>} */
1069
1091
  const directories = new Set();
1070
1092
  /** @type {Set<string>} */
1093
+ const directorySymlinks = new Set();
1094
+ /** @type {Set<string>} */
1071
1095
  const missing = new Set();
1072
1096
  /** @type {Set<string>} */
1073
1097
  const resolveFiles = new Set();
@@ -1077,83 +1101,99 @@ class FileSystemInfo {
1077
1101
  const resolveMissing = new Set();
1078
1102
  /** @type {Map<string, string>} */
1079
1103
  const resolveResults = new Map();
1080
- /** @type {asyncLib.QueueObject<{type: number, path: string, context?: string, expected?: string }, Error>} */
1081
- const queue = asyncLib.queue(
1082
- ({ type, context, path, expected }, callback) => {
1104
+ const invalidResolveResults = new Set();
1105
+ const resolverContext = {
1106
+ fileDependencies: resolveFiles,
1107
+ contextDependencies: resolveDirectories,
1108
+ missingDependencies: resolveMissing
1109
+ };
1110
+ processAsyncTree(
1111
+ Array.from(deps, dep => ({
1112
+ type: RBDT_RESOLVE_CJS,
1113
+ context,
1114
+ path: dep,
1115
+ expected: undefined
1116
+ })),
1117
+ 20,
1118
+ ({ type, context, path, expected }, push, callback) => {
1083
1119
  const resolveDirectory = path => {
1084
1120
  const key = `d\n${context}\n${path}`;
1085
1121
  if (resolveResults.has(key)) {
1086
1122
  return callback();
1087
1123
  }
1088
- resolveContext(
1089
- context,
1090
- path,
1091
- {
1092
- fileDependencies: resolveFiles,
1093
- contextDependencies: resolveDirectories,
1094
- missingDependencies: resolveMissing
1095
- },
1096
- (err, result) => {
1124
+ resolveResults.set(key, undefined);
1125
+ resolveContext(context, path, resolverContext, (err, result) => {
1126
+ if (err) {
1127
+ invalidResolveResults.add(key);
1128
+ if (
1129
+ err.code === "ENOENT" ||
1130
+ err.code === "UNDECLARED_DEPENDENCY"
1131
+ ) {
1132
+ return callback();
1133
+ }
1134
+ err.message += `\nwhile resolving '${path}' in ${context} to a directory`;
1135
+ return callback(err);
1136
+ }
1137
+ resolveResults.set(key, result);
1138
+ push({
1139
+ type: RBDT_DIRECTORY,
1140
+ context: undefined,
1141
+ path: result,
1142
+ expected: undefined
1143
+ });
1144
+ callback();
1145
+ });
1146
+ };
1147
+ const resolveFile = (path, symbol, resolve) => {
1148
+ const key = `${symbol}\n${context}\n${path}`;
1149
+ if (resolveResults.has(key)) {
1150
+ return callback();
1151
+ }
1152
+ resolveResults.set(key, undefined);
1153
+ resolve(context, path, resolverContext, (err, result) => {
1154
+ if (expected) {
1155
+ if (result === expected) {
1156
+ resolveResults.set(key, result);
1157
+ } else {
1158
+ invalidResolveResults.add(key);
1159
+ this.logger.debug(
1160
+ `Resolving '${path}' in ${context} for build dependencies doesn't lead to expected result '${expected}', but to '${result}' instead. Resolving dependencies are ignored for this path.`
1161
+ );
1162
+ }
1163
+ } else {
1097
1164
  if (err) {
1165
+ invalidResolveResults.add(key);
1098
1166
  if (
1099
1167
  err.code === "ENOENT" ||
1100
1168
  err.code === "UNDECLARED_DEPENDENCY"
1101
1169
  ) {
1102
1170
  return callback();
1103
1171
  }
1104
- err.message += `\nwhile resolving '${path}' in ${context} to a directory`;
1172
+ err.message += `\nwhile resolving '${path}' in ${context} as file`;
1105
1173
  return callback(err);
1106
1174
  }
1107
1175
  resolveResults.set(key, result);
1108
- queue.push({
1109
- type: RBDT_DIRECTORY,
1110
- path: result
1176
+ push({
1177
+ type: RBDT_FILE,
1178
+ context: undefined,
1179
+ path: result,
1180
+ expected: undefined
1111
1181
  });
1112
- callback();
1113
1182
  }
1114
- );
1115
- };
1116
- const resolveFile = path => {
1117
- const key = `f\n${context}\n${path}`;
1118
- if (resolveResults.has(key)) {
1119
- return callback();
1120
- }
1121
- resolve(
1122
- context,
1123
- path,
1124
- {
1125
- fileDependencies: resolveFiles,
1126
- contextDependencies: resolveDirectories,
1127
- missingDependencies: resolveMissing
1128
- },
1129
- (err, result) => {
1130
- if (expected) {
1131
- if (result === expected) {
1132
- resolveResults.set(key, result);
1133
- }
1134
- } else {
1135
- if (err) {
1136
- if (
1137
- err.code === "ENOENT" ||
1138
- err.code === "UNDECLARED_DEPENDENCY"
1139
- ) {
1140
- return callback();
1141
- }
1142
- err.message += `\nwhile resolving '${path}' in ${context} as file`;
1143
- return callback(err);
1144
- }
1145
- resolveResults.set(key, result);
1146
- queue.push({
1147
- type: RBDT_FILE,
1148
- path: result
1149
- });
1150
- }
1151
- callback();
1152
- }
1153
- );
1183
+ callback();
1184
+ });
1154
1185
  };
1155
1186
  switch (type) {
1156
- case RBDT_RESOLVE: {
1187
+ case RBDT_RESOLVE_CJS: {
1188
+ const isDirectory = /[\\/]$/.test(path);
1189
+ if (isDirectory) {
1190
+ resolveDirectory(path.slice(0, path.length - 1));
1191
+ } else {
1192
+ resolveFile(path, "f", resolveCjs);
1193
+ }
1194
+ break;
1195
+ }
1196
+ case RBDT_RESOLVE_ESM: {
1157
1197
  const isDirectory = /[\\/]$/.test(path);
1158
1198
  if (isDirectory) {
1159
1199
  resolveDirectory(path.slice(0, path.length - 1));
@@ -1166,8 +1206,12 @@ class FileSystemInfo {
1166
1206
  resolveDirectory(path);
1167
1207
  break;
1168
1208
  }
1169
- case RBDT_RESOLVE_FILE: {
1170
- resolveFile(path);
1209
+ case RBDT_RESOLVE_CJS_FILE: {
1210
+ resolveFile(path, "f", resolveCjs);
1211
+ break;
1212
+ }
1213
+ case RBDT_RESOLVE_ESM_FILE: {
1214
+ resolveFile(path, "e", resolveEsm);
1171
1215
  break;
1172
1216
  }
1173
1217
  case RBDT_FILE: {
@@ -1175,19 +1219,22 @@ class FileSystemInfo {
1175
1219
  callback();
1176
1220
  break;
1177
1221
  }
1222
+ files.add(path);
1178
1223
  this.fs.realpath(path, (err, _realPath) => {
1179
1224
  if (err) return callback(err);
1180
1225
  const realPath = /** @type {string} */ (_realPath);
1181
1226
  if (realPath !== path) {
1227
+ fileSymlinks.add(path);
1182
1228
  resolveFiles.add(path);
1183
- }
1184
- if (!files.has(realPath)) {
1229
+ if (files.has(realPath)) return callback();
1185
1230
  files.add(realPath);
1186
- queue.push({
1187
- type: RBDT_FILE_DEPENDENCIES,
1188
- path: realPath
1189
- });
1190
1231
  }
1232
+ push({
1233
+ type: RBDT_FILE_DEPENDENCIES,
1234
+ context: undefined,
1235
+ path: realPath,
1236
+ expected: undefined
1237
+ });
1191
1238
  callback();
1192
1239
  });
1193
1240
  break;
@@ -1197,19 +1244,22 @@ class FileSystemInfo {
1197
1244
  callback();
1198
1245
  break;
1199
1246
  }
1247
+ directories.add(path);
1200
1248
  this.fs.realpath(path, (err, _realPath) => {
1201
1249
  if (err) return callback(err);
1202
1250
  const realPath = /** @type {string} */ (_realPath);
1203
1251
  if (realPath !== path) {
1252
+ directorySymlinks.add(path);
1204
1253
  resolveFiles.add(path);
1205
- }
1206
- if (!directories.has(realPath)) {
1254
+ if (directories.has(realPath)) return callback();
1207
1255
  directories.add(realPath);
1208
- queue.push({
1209
- type: RBDT_DIRECTORY_DEPENDENCIES,
1210
- path: realPath
1211
- });
1212
1256
  }
1257
+ push({
1258
+ type: RBDT_DIRECTORY_DEPENDENCIES,
1259
+ context: undefined,
1260
+ path: realPath,
1261
+ expected: undefined
1262
+ });
1213
1263
  callback();
1214
1264
  });
1215
1265
  break;
@@ -1227,30 +1277,33 @@ class FileSystemInfo {
1227
1277
  children: for (const child of module.children) {
1228
1278
  let childPath = child.filename;
1229
1279
  if (childPath) {
1230
- queue.push({
1280
+ push({
1231
1281
  type: RBDT_FILE,
1232
- path: childPath
1282
+ context: undefined,
1283
+ path: childPath,
1284
+ expected: undefined
1233
1285
  });
1234
- if (childPath.endsWith(".js"))
1235
- childPath = childPath.slice(0, -3);
1236
1286
  const context = dirname(this.fs, path);
1237
1287
  for (const modulePath of module.paths) {
1238
1288
  if (childPath.startsWith(modulePath)) {
1239
- const request = childPath.slice(modulePath.length + 1);
1240
- queue.push({
1241
- type: RBDT_RESOLVE_FILE,
1289
+ let request = childPath.slice(modulePath.length + 1);
1290
+ if (request.endsWith(".js"))
1291
+ request = request.slice(0, -3);
1292
+ push({
1293
+ type: RBDT_RESOLVE_CJS_FILE,
1242
1294
  context,
1243
1295
  path: request,
1244
- expected: childPath
1296
+ expected: child.filename
1245
1297
  });
1246
1298
  continue children;
1247
1299
  }
1248
1300
  }
1249
1301
  let request = relative(this.fs, context, childPath);
1302
+ if (request.endsWith(".js")) request = request.slice(0, -3);
1250
1303
  request = request.replace(/\\/g, "/");
1251
1304
  if (!request.startsWith("../")) request = `./${request}`;
1252
- queue.push({
1253
- type: RBDT_RESOLVE_FILE,
1305
+ push({
1306
+ type: RBDT_RESOLVE_CJS_FILE,
1254
1307
  context,
1255
1308
  path: request,
1256
1309
  expected: child.filename
@@ -1294,10 +1347,11 @@ class FileSystemInfo {
1294
1347
  // e.g. import.meta
1295
1348
  continue;
1296
1349
  }
1297
- queue.push({
1298
- type: RBDT_RESOLVE_FILE,
1350
+ push({
1351
+ type: RBDT_RESOLVE_ESM_FILE,
1299
1352
  context,
1300
- path: dependency
1353
+ path: dependency,
1354
+ expected: undefined
1301
1355
  });
1302
1356
  } catch (e) {
1303
1357
  this.logger.warn(
@@ -1340,9 +1394,11 @@ class FileSystemInfo {
1340
1394
  resolveMissing.add(packageJson);
1341
1395
  const parent = dirname(this.fs, packagePath);
1342
1396
  if (parent !== packagePath) {
1343
- queue.push({
1397
+ push({
1344
1398
  type: RBDT_DIRECTORY_DEPENDENCIES,
1345
- path: parent
1399
+ context: undefined,
1400
+ path: parent,
1401
+ expected: undefined
1346
1402
  });
1347
1403
  }
1348
1404
  callback();
@@ -1360,10 +1416,11 @@ class FileSystemInfo {
1360
1416
  const depsObject = packageData.dependencies;
1361
1417
  if (typeof depsObject === "object" && depsObject) {
1362
1418
  for (const dep of Object.keys(depsObject)) {
1363
- queue.push({
1419
+ push({
1364
1420
  type: RBDT_RESOLVE_DIRECTORY,
1365
1421
  context: packagePath,
1366
- path: dep
1422
+ path: dep,
1423
+ expected: undefined
1367
1424
  });
1368
1425
  }
1369
1426
  }
@@ -1373,38 +1430,24 @@ class FileSystemInfo {
1373
1430
  }
1374
1431
  }
1375
1432
  },
1376
- 50
1433
+ err => {
1434
+ if (err) return callback(err);
1435
+ for (const l of fileSymlinks) files.delete(l);
1436
+ for (const l of directorySymlinks) directories.delete(l);
1437
+ for (const k of invalidResolveResults) resolveResults.delete(k);
1438
+ callback(null, {
1439
+ files,
1440
+ directories,
1441
+ missing,
1442
+ resolveResults,
1443
+ resolveDependencies: {
1444
+ files: resolveFiles,
1445
+ directories: resolveDirectories,
1446
+ missing: resolveMissing
1447
+ }
1448
+ });
1449
+ }
1377
1450
  );
1378
- queue.drain = () => {
1379
- callback(null, {
1380
- files,
1381
- directories,
1382
- missing,
1383
- resolveResults,
1384
- resolveDependencies: {
1385
- files: resolveFiles,
1386
- directories: resolveDirectories,
1387
- missing: resolveMissing
1388
- }
1389
- });
1390
- };
1391
- queue.error = err => {
1392
- callback(err);
1393
- callback = () => {};
1394
- };
1395
- let jobQueued = false;
1396
- for (const dep of deps) {
1397
- queue.push({
1398
- type: RBDT_RESOLVE,
1399
- context,
1400
- path: dep
1401
- });
1402
- jobQueued = true;
1403
- }
1404
- if (!jobQueued) {
1405
- // queue won't call drain when no jobs are queue
1406
- queue.drain();
1407
- }
1408
1451
  }
1409
1452
 
1410
1453
  /**
@@ -1413,6 +1456,11 @@ class FileSystemInfo {
1413
1456
  * @returns {void}
1414
1457
  */
1415
1458
  checkResolveResultsValid(resolveResults, callback) {
1459
+ const {
1460
+ resolveCjs,
1461
+ resolveEsm,
1462
+ resolveContext
1463
+ } = this._createBuildDependenciesResolvers();
1416
1464
  asyncLib.eachLimit(
1417
1465
  resolveResults,
1418
1466
  20,
@@ -1427,7 +1475,14 @@ class FileSystemInfo {
1427
1475
  });
1428
1476
  break;
1429
1477
  case "f":
1430
- resolve(context, path, {}, (err, result) => {
1478
+ resolveCjs(context, path, {}, (err, result) => {
1479
+ if (err) return callback(err);
1480
+ if (result !== expectedResult) return callback(INVALID);
1481
+ callback();
1482
+ });
1483
+ break;
1484
+ case "e":
1485
+ resolveEsm(context, path, {}, (err, result) => {
1431
1486
  if (err) return callback(err);
1432
1487
  if (result !== expectedResult) return callback(INVALID);
1433
1488
  callback();