Skip to content

Commit dd53923

Browse files
committed
Revert "Merge pull request #15332 from webpack/fix/context-resolve-issue-11335"
This reverts commit 89c92bf, reversing changes made to a28af55.
1 parent 9d21401 commit dd53923

File tree

22 files changed

+220
-408
lines changed

22 files changed

+220
-408
lines changed

lib/ContextModule.js

Lines changed: 24 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ const makeSerializable = require("./util/makeSerializable");
6161

6262
/**
6363
* @typedef {Object} ContextModuleOptionsExtras
64-
* @property {string|string[]} resource
64+
* @property {string} resource
6565
* @property {string=} resourceQuery
6666
* @property {string=} resourceFragment
6767
* @property {TODO} resolveOptions
@@ -92,36 +92,23 @@ class ContextModule extends Module {
9292
* @param {ContextModuleOptions} options options object
9393
*/
9494
constructor(resolveDependencies, options) {
95-
if (!options || typeof options.resource === "string") {
96-
const parsed = parseResource(
97-
options ? /** @type {string} */ (options.resource) : ""
98-
);
99-
const resource = parsed.path;
100-
const resourceQuery = (options && options.resourceQuery) || parsed.query;
101-
const resourceFragment =
102-
(options && options.resourceFragment) || parsed.fragment;
103-
104-
super("javascript/dynamic", resource);
105-
/** @type {ContextModuleOptions} */
106-
this.options = {
107-
...options,
108-
resource,
109-
resourceQuery,
110-
resourceFragment
111-
};
112-
} else {
113-
super("javascript/dynamic");
114-
/** @type {ContextModuleOptions} */
115-
this.options = {
116-
...options,
117-
resource: options.resource,
118-
resourceQuery: options.resourceQuery || "",
119-
resourceFragment: options.resourceFragment || ""
120-
};
121-
}
95+
const parsed = parseResource(options ? options.resource : "");
96+
const resource = parsed.path;
97+
const resourceQuery = (options && options.resourceQuery) || parsed.query;
98+
const resourceFragment =
99+
(options && options.resourceFragment) || parsed.fragment;
100+
101+
super("javascript/dynamic", resource);
122102

123103
// Info from Factory
124104
this.resolveDependencies = resolveDependencies;
105+
/** @type {ContextModuleOptions} */
106+
this.options = {
107+
...options,
108+
resource,
109+
resourceQuery,
110+
resourceFragment
111+
};
125112
if (options && options.resolveOptions !== undefined) {
126113
this.resolveOptions = options.resolveOptions;
127114
}
@@ -168,11 +155,7 @@ class ContextModule extends Module {
168155
}
169156

170157
_createIdentifier() {
171-
let identifier =
172-
this.context ||
173-
(typeof this.options.resource === "string"
174-
? this.options.resource
175-
: this.options.resource.join("|"));
158+
let identifier = this.context;
176159
if (this.options.resourceQuery) {
177160
identifier += `|${this.options.resourceQuery}`;
178161
}
@@ -237,16 +220,7 @@ class ContextModule extends Module {
237220
* @returns {string} a user readable identifier of the module
238221
*/
239222
readableIdentifier(requestShortener) {
240-
let identifier;
241-
if (this.context) {
242-
identifier = requestShortener.shorten(this.context) + "/";
243-
} else if (typeof this.options.resource === "string") {
244-
identifier = requestShortener.shorten(this.options.resource) + "/";
245-
} else {
246-
identifier = this.options.resource
247-
.map(r => requestShortener.shorten(r) + "/")
248-
.join(" ");
249-
}
223+
let identifier = requestShortener.shorten(this.context) + "/";
250224
if (this.options.resourceQuery) {
251225
identifier += ` ${this.options.resourceQuery}`;
252226
}
@@ -296,30 +270,11 @@ class ContextModule extends Module {
296270
* @returns {string | null} an identifier for library inclusion
297271
*/
298272
libIdent(options) {
299-
let identifier;
300-
301-
if (this.context) {
302-
identifier = contextify(
303-
options.context,
304-
this.context,
305-
options.associatedObjectForCache
306-
);
307-
} else if (typeof this.options.resource === "string") {
308-
identifier = contextify(
309-
options.context,
310-
this.options.resource,
311-
options.associatedObjectForCache
312-
);
313-
} else {
314-
const arr = [];
315-
for (const res of this.options.resource) {
316-
arr.push(
317-
contextify(options.context, res, options.associatedObjectForCache)
318-
);
319-
}
320-
identifier = arr.join(" ");
321-
}
322-
273+
let identifier = contextify(
274+
options.context,
275+
this.context,
276+
options.associatedObjectForCache
277+
);
323278
if (this.layer) identifier = `(${this.layer})/${identifier}`;
324279
if (this.options.mode) {
325280
identifier += ` ${this.options.mode}`;
@@ -487,11 +442,7 @@ class ContextModule extends Module {
487442
compilation.fileSystemInfo.createSnapshot(
488443
startTime,
489444
null,
490-
this.context
491-
? [this.context]
492-
: typeof this.options.resource === "string"
493-
? [this.options.resource]
494-
: this.options.resource,
445+
[this.context],
495446
null,
496447
SNAPSHOT_OPTIONS,
497448
(err, snapshot) => {
@@ -515,13 +466,7 @@ class ContextModule extends Module {
515466
missingDependencies,
516467
buildDependencies
517468
) {
518-
if (this.context) {
519-
contextDependencies.add(this.context);
520-
} else if (typeof this.options.resource === "string") {
521-
contextDependencies.add(this.options.resource);
522-
} else {
523-
for (const res of this.options.resource) contextDependencies.add(res);
524-
}
469+
contextDependencies.add(this.context);
525470
}
526471

527472
/**

lib/ContextModuleFactory.js

Lines changed: 21 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -167,22 +167,18 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
167167
asyncLib.parallel(
168168
[
169169
callback => {
170-
const results = [];
171-
const yield_ = obj => results.push(obj);
172-
173170
contextResolver.resolve(
174171
{},
175172
context,
176173
resource,
177174
{
178175
fileDependencies,
179176
missingDependencies,
180-
contextDependencies,
181-
yield: yield_
177+
contextDependencies
182178
},
183-
err => {
179+
(err, result) => {
184180
if (err) return callback(err);
185-
callback(null, results);
181+
callback(null, result);
186182
}
187183
);
188184
},
@@ -217,20 +213,15 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
217213
contextDependencies
218214
});
219215
}
220-
const [contextResult, loaderResult] = result;
216+
221217
this.hooks.afterResolve.callAsync(
222218
{
223219
addon:
224220
loadersPrefix +
225-
loaderResult.join("!") +
226-
(loaderResult.length > 0 ? "!" : ""),
227-
resource:
228-
contextResult.length > 1
229-
? contextResult.map(r => r.path)
230-
: contextResult[0].path,
221+
result[1].join("!") +
222+
(result[1].length > 0 ? "!" : ""),
223+
resource: result[0],
231224
resolveDependencies: this.resolveDependencies.bind(this),
232-
resourceQuery: contextResult[0].query,
233-
resourceFragment: contextResult[0].fragment,
234225
...beforeResolveResult
235226
},
236227
(err, result) => {
@@ -287,28 +278,26 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
287278
} = options;
288279
if (!regExp || !resource) return callback(null, []);
289280

290-
let severalContexts = false;
291-
const addDirectoryChecked = (ctx, directory, visited, callback) => {
281+
const addDirectoryChecked = (directory, visited, callback) => {
292282
fs.realpath(directory, (err, realPath) => {
293283
if (err) return callback(err);
294284
if (visited.has(realPath)) return callback(null, []);
295285
let recursionStack;
296286
addDirectory(
297-
ctx,
298287
directory,
299-
(_, dir, callback) => {
288+
(dir, callback) => {
300289
if (recursionStack === undefined) {
301290
recursionStack = new Set(visited);
302291
recursionStack.add(realPath);
303292
}
304-
addDirectoryChecked(ctx, dir, recursionStack, callback);
293+
addDirectoryChecked(dir, recursionStack, callback);
305294
},
306295
callback
307296
);
308297
});
309298
};
310299

311-
const addDirectory = (ctx, directory, addSubDirectory, callback) => {
300+
const addDirectory = (directory, addSubDirectory, callback) => {
312301
fs.readdir(directory, (err, files) => {
313302
if (err) return callback(err);
314303
const processedFiles = cmf.hooks.contextModuleFiles.call(
@@ -335,15 +324,16 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
335324

336325
if (stat.isDirectory()) {
337326
if (!recursive) return callback();
338-
addSubDirectory(ctx, subResource, callback);
327+
addSubDirectory(subResource, callback);
339328
} else if (
340329
stat.isFile() &&
341330
(!include || subResource.match(include))
342331
) {
343332
const obj = {
344-
context: ctx,
333+
context: resource,
345334
request:
346-
"." + subResource.substr(ctx.length).replace(/\\/g, "/")
335+
"." +
336+
subResource.substr(resource.length).replace(/\\/g, "/")
347337
};
348338

349339
this.hooks.alternativeRequests.callAsync(
@@ -354,11 +344,8 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
354344
alternatives = alternatives
355345
.filter(obj => regExp.test(obj.request))
356346
.map(obj => {
357-
const request = severalContexts
358-
? join(fs, obj.context, obj.request)
359-
: obj.request;
360347
const dep = new ContextElementDependency(
361-
request + resourceQuery + resourceFragment,
348+
obj.request + resourceQuery + resourceFragment,
362349
obj.request,
363350
typePrefix,
364351
category,
@@ -395,38 +382,12 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
395382
});
396383
};
397384

398-
const addSubDirectory = (ctx, dir, callback) =>
399-
addDirectory(ctx, dir, addSubDirectory, callback);
400-
401-
const visitResource = (resource, callback) => {
402-
if (typeof fs.realpath === "function") {
403-
addDirectoryChecked(resource, resource, new Set(), callback);
404-
} else {
405-
addDirectory(resource, resource, addSubDirectory, callback);
406-
}
407-
};
408-
409-
if (typeof resource === "string") {
410-
visitResource(resource, callback);
385+
if (typeof fs.realpath === "function") {
386+
addDirectoryChecked(resource, new Set(), callback);
411387
} else {
412-
severalContexts = true;
413-
asyncLib.map(resource, visitResource, (err, result) => {
414-
if (err) return callback(err);
415-
416-
// result dependencies should have unique userRequest
417-
// ordered by resolve result
418-
const temp = new Set();
419-
const res = [];
420-
for (let i = 0; i < result.length; i++) {
421-
const inner = result[i];
422-
for (const el of inner) {
423-
if (temp.has(el.userRequest)) continue;
424-
res.push(el);
425-
temp.add(el.userRequest);
426-
}
427-
}
428-
callback(null, res);
429-
});
388+
const addSubDirectory = (dir, callback) =>
389+
addDirectory(dir, addSubDirectory, callback);
390+
addDirectory(resource, addSubDirectory, callback);
430391
}
431392
}
432393
};

0 commit comments

Comments
 (0)