Skip to content

Commit 838d416

Browse files
authored
Merge branch 'master' into deps/extract-text-webpack-plugin
2 parents f296790 + e72a88a commit 838d416

17 files changed

Lines changed: 545 additions & 405 deletions

File tree

.eslintrc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ module.exports = {
3636
"space-before-function-paren": ["error", "never"],
3737
"space-before-blocks": "error",
3838
"object-curly-spacing": ["error", "always"],
39+
"indent": "off",
3940
"keyword-spacing": ["error", {
4041
"after": false,
4142
"overrides": {

bin/convert-argv.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ module.exports = function(yargs, argv, convertOptions) {
300300
binding += "-loader";
301301
}
302302
var rule = {
303-
test: new RegExp("\\." + name.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "$"),
303+
test: new RegExp("\\." + name.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") + "$"), // eslint-disable-line no-useless-escape
304304
loader: binding
305305
};
306306
if(arg === "module-bind-pre") {

lib/MultiCompiler.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ module.exports = class MultiCompiler extends Tapable {
4646
get outputPath() {
4747
let commonPath = this.compilers[0].outputPath;
4848
for(const compiler of this.compilers) {
49-
while(compiler.outputPath.indexOf(commonPath) !== 0 && /[\/\\]/.test(commonPath)) {
50-
commonPath = commonPath.replace(/[\/\\][^\/\\]*$/, "");
49+
while(compiler.outputPath.indexOf(commonPath) !== 0 && /[/\\]/.test(commonPath)) {
50+
commonPath = commonPath.replace(/[/\\][^/\\]*$/, "");
5151
}
5252
}
5353

lib/NormalModuleFactory.js

Lines changed: 133 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -50,173 +50,161 @@ class NormalModuleFactory extends Tapable {
5050
this.cachePredicate = typeof options.unsafeCache === "function" ? options.unsafeCache : Boolean.bind(null, options.unsafeCache);
5151
this.context = context || "";
5252
this.parserCache = {};
53-
this.plugin("factory", function() {
54-
/* beautify preserve:start */
55-
// js-beautify consider to concat "return" and "("
56-
// but it сontradicts eslint rule (keyword-spacing)
57-
return (result, callback) => {
58-
/* beautify preserve:end */
59-
let resolver = this.applyPluginsWaterfall0("resolver", null);
53+
this.plugin("factory", () => (result, callback) => {
54+
let resolver = this.applyPluginsWaterfall0("resolver", null);
6055

61-
// Ignored
62-
if(!resolver) return callback();
63-
64-
resolver(result, (err, data) => {
65-
if(err) return callback(err);
56+
// Ignored
57+
if(!resolver) return callback();
6658

67-
// Ignored
68-
if(!data) return callback();
59+
resolver(result, (err, data) => {
60+
if(err) return callback(err);
6961

70-
// direct module
71-
if(typeof data.source === "function")
72-
return callback(null, data);
62+
// Ignored
63+
if(!data) return callback();
7364

74-
this.applyPluginsAsyncWaterfall("after-resolve", data, (err, result) => {
75-
if(err) return callback(err);
65+
// direct module
66+
if(typeof data.source === "function")
67+
return callback(null, data);
7668

77-
// Ignored
78-
if(!result) return callback();
69+
this.applyPluginsAsyncWaterfall("after-resolve", data, (err, result) => {
70+
if(err) return callback(err);
7971

80-
let createdModule = this.applyPluginsBailResult("create-module", result);
81-
if(!createdModule) {
72+
// Ignored
73+
if(!result) return callback();
8274

83-
if(!result.request) {
84-
return callback(new Error("Empty dependency (no request)"));
85-
}
75+
let createdModule = this.applyPluginsBailResult("create-module", result);
76+
if(!createdModule) {
8677

87-
createdModule = new NormalModule(
88-
result.request,
89-
result.userRequest,
90-
result.rawRequest,
91-
result.loaders,
92-
result.resource,
93-
result.parser
94-
);
78+
if(!result.request) {
79+
return callback(new Error("Empty dependency (no request)"));
9580
}
9681

97-
createdModule = this.applyPluginsWaterfall0("module", createdModule);
82+
createdModule = new NormalModule(
83+
result.request,
84+
result.userRequest,
85+
result.rawRequest,
86+
result.loaders,
87+
result.resource,
88+
result.parser
89+
);
90+
}
9891

99-
return callback(null, createdModule);
100-
});
92+
createdModule = this.applyPluginsWaterfall0("module", createdModule);
93+
94+
return callback(null, createdModule);
10195
});
102-
};
96+
});
10397
});
104-
this.plugin("resolver", function() {
105-
/* beautify preserve:start */
106-
// js-beautify consider to concat "return" and "("
107-
// but it сontradicts eslint rule (keyword-spacing)
108-
return (data, callback) => {
109-
/* beautify preserve:end */
110-
const contextInfo = data.contextInfo;
111-
const context = data.context;
112-
const request = data.request;
113-
114-
const noAutoLoaders = /^-?!/.test(request);
115-
const noPrePostAutoLoaders = /^!!/.test(request);
116-
const noPostAutoLoaders = /^-!/.test(request);
117-
let elements = request.replace(/^-?!+/, "").replace(/!!+/g, "!").split("!");
118-
let resource = elements.pop();
119-
elements = elements.map(identToLoaderRequest);
120-
121-
asyncLib.parallel([
122-
callback => this.resolveRequestArray(contextInfo, context, elements, this.resolvers.loader, callback),
123-
callback => {
124-
if(resource === "" || resource[0] === "?")
125-
return callback(null, {
126-
resource
127-
});
128-
129-
this.resolvers.normal.resolve(contextInfo, context, resource, (err, resource, resourceResolveData) => {
130-
if(err) return callback(err);
131-
callback(null, {
132-
resourceResolveData,
133-
resource
134-
});
98+
this.plugin("resolver", () => (data, callback) => {
99+
const contextInfo = data.contextInfo;
100+
const context = data.context;
101+
const request = data.request;
102+
103+
const noAutoLoaders = /^-?!/.test(request);
104+
const noPrePostAutoLoaders = /^!!/.test(request);
105+
const noPostAutoLoaders = /^-!/.test(request);
106+
let elements = request.replace(/^-?!+/, "").replace(/!!+/g, "!").split("!");
107+
let resource = elements.pop();
108+
elements = elements.map(identToLoaderRequest);
109+
110+
asyncLib.parallel([
111+
callback => this.resolveRequestArray(contextInfo, context, elements, this.resolvers.loader, callback),
112+
callback => {
113+
if(resource === "" || resource[0] === "?")
114+
return callback(null, {
115+
resource
135116
});
136-
}
137-
], (err, results) => {
138-
if(err) return callback(err);
139-
let loaders = results[0];
140-
const resourceResolveData = results[1].resourceResolveData;
141-
resource = results[1].resource;
142-
143-
// translate option idents
144-
try {
145-
loaders.forEach(item => {
146-
if(typeof item.options === "string" && /^\?/.test(item.options)) {
147-
item.options = this.ruleSet.findOptionsByIdent(item.options.substr(1));
148-
}
117+
118+
this.resolvers.normal.resolve(contextInfo, context, resource, (err, resource, resourceResolveData) => {
119+
if(err) return callback(err);
120+
callback(null, {
121+
resourceResolveData,
122+
resource
149123
});
150-
} catch(e) {
151-
return callback(e);
152-
}
124+
});
125+
}
126+
], (err, results) => {
127+
if(err) return callback(err);
128+
let loaders = results[0];
129+
const resourceResolveData = results[1].resourceResolveData;
130+
resource = results[1].resource;
131+
132+
// translate option idents
133+
try {
134+
loaders.forEach(item => {
135+
if(typeof item.options === "string" && /^\?/.test(item.options)) {
136+
item.options = this.ruleSet.findOptionsByIdent(item.options.substr(1));
137+
}
138+
});
139+
} catch(e) {
140+
return callback(e);
141+
}
153142

154-
if(resource === false) {
155-
// ignored
156-
return callback(null,
157-
new RawModule(
158-
"/* (ignored) */",
159-
`ignored ${context} ${request}`,
160-
`${request} (ignored)`
161-
)
162-
);
163-
}
143+
if(resource === false) {
144+
// ignored
145+
return callback(null,
146+
new RawModule(
147+
"/* (ignored) */",
148+
`ignored ${context} ${request}`,
149+
`${request} (ignored)`
150+
)
151+
);
152+
}
164153

165-
const userRequest = loaders.map(loaderToIdent).concat([resource]).join("!");
154+
const userRequest = loaders.map(loaderToIdent).concat([resource]).join("!");
166155

167-
let resourcePath = resource;
168-
let resourceQuery = "";
169-
const queryIndex = resourcePath.indexOf("?");
170-
if(queryIndex >= 0) {
171-
resourceQuery = resourcePath.substr(queryIndex);
172-
resourcePath = resourcePath.substr(0, queryIndex);
173-
}
156+
let resourcePath = resource;
157+
let resourceQuery = "";
158+
const queryIndex = resourcePath.indexOf("?");
159+
if(queryIndex >= 0) {
160+
resourceQuery = resourcePath.substr(queryIndex);
161+
resourcePath = resourcePath.substr(0, queryIndex);
162+
}
174163

175-
const result = this.ruleSet.exec({
176-
resource: resourcePath,
177-
resourceQuery,
178-
issuer: contextInfo.issuer,
179-
compiler: contextInfo.compiler
180-
});
181-
const settings = {};
182-
const useLoadersPost = [];
183-
const useLoaders = [];
184-
const useLoadersPre = [];
185-
result.forEach(r => {
186-
if(r.type === "use") {
187-
if(r.enforce === "post" && !noPostAutoLoaders && !noPrePostAutoLoaders)
188-
useLoadersPost.push(r.value);
189-
else if(r.enforce === "pre" && !noPrePostAutoLoaders)
190-
useLoadersPre.push(r.value);
191-
else if(!r.enforce && !noAutoLoaders && !noPrePostAutoLoaders)
192-
useLoaders.push(r.value);
193-
} else {
194-
settings[r.type] = r.value;
195-
}
196-
});
197-
asyncLib.parallel([
198-
this.resolveRequestArray.bind(this, contextInfo, this.context, useLoadersPost, this.resolvers.loader),
199-
this.resolveRequestArray.bind(this, contextInfo, this.context, useLoaders, this.resolvers.loader),
200-
this.resolveRequestArray.bind(this, contextInfo, this.context, useLoadersPre, this.resolvers.loader)
201-
], (err, results) => {
202-
if(err) return callback(err);
203-
loaders = results[0].concat(loaders, results[1], results[2]);
204-
process.nextTick(() => {
205-
callback(null, {
206-
context: context,
207-
request: loaders.map(loaderToIdent).concat([resource]).join("!"),
208-
dependencies: data.dependencies,
209-
userRequest,
210-
rawRequest: request,
211-
loaders,
212-
resource,
213-
resourceResolveData,
214-
parser: this.getParser(settings.parser)
215-
});
164+
const result = this.ruleSet.exec({
165+
resource: resourcePath,
166+
resourceQuery,
167+
issuer: contextInfo.issuer,
168+
compiler: contextInfo.compiler
169+
});
170+
const settings = {};
171+
const useLoadersPost = [];
172+
const useLoaders = [];
173+
const useLoadersPre = [];
174+
result.forEach(r => {
175+
if(r.type === "use") {
176+
if(r.enforce === "post" && !noPostAutoLoaders && !noPrePostAutoLoaders)
177+
useLoadersPost.push(r.value);
178+
else if(r.enforce === "pre" && !noPrePostAutoLoaders)
179+
useLoadersPre.push(r.value);
180+
else if(!r.enforce && !noAutoLoaders && !noPrePostAutoLoaders)
181+
useLoaders.push(r.value);
182+
} else {
183+
settings[r.type] = r.value;
184+
}
185+
});
186+
asyncLib.parallel([
187+
this.resolveRequestArray.bind(this, contextInfo, this.context, useLoadersPost, this.resolvers.loader),
188+
this.resolveRequestArray.bind(this, contextInfo, this.context, useLoaders, this.resolvers.loader),
189+
this.resolveRequestArray.bind(this, contextInfo, this.context, useLoadersPre, this.resolvers.loader)
190+
], (err, results) => {
191+
if(err) return callback(err);
192+
loaders = results[0].concat(loaders, results[1], results[2]);
193+
process.nextTick(() => {
194+
callback(null, {
195+
context: context,
196+
request: loaders.map(loaderToIdent).concat([resource]).join("!"),
197+
dependencies: data.dependencies,
198+
userRequest,
199+
rawRequest: request,
200+
loaders,
201+
resource,
202+
resourceResolveData,
203+
parser: this.getParser(settings.parser)
216204
});
217205
});
218206
});
219-
};
207+
});
220208
});
221209
}
222210

lib/Parser.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1102,7 +1102,7 @@ class Parser extends Tapable {
11021102
result = this.applyPluginsBailResult1("call " + callee.identifier, expression);
11031103
if(result === true)
11041104
return;
1105-
let identifier = callee.identifier.replace(/\.[^\.]+$/, ".*");
1105+
let identifier = callee.identifier.replace(/\.[^.]+$/, ".*");
11061106
if(identifier !== callee.identifier) {
11071107
result = this.applyPluginsBailResult1("call " + identifier, expression);
11081108
if(result === true)

lib/Stats.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class Stats {
110110
const showPublicPath = optionOrLocalFallback(options.publicPath, !forToString);
111111
const excludeModules = [].concat(optionOrFallback(options.exclude, [])).map(item => {
112112
if(typeof item === "string") {
113-
const regExp = new RegExp(`[\\\\/]${item.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")}([\\\\/]|$|!|\\?)`);
113+
const regExp = new RegExp(`[\\\\/]${item.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&")}([\\\\/]|$|!|\\?)`); // eslint-disable-line no-useless-escape
114114
return ident => regExp.test(ident);
115115
}
116116
if(item && typeof item === "object" && typeof item.test === "function")

lib/Template.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module.exports = class Template extends Tapable {
2828

2929
static toPath(str) {
3030
if(typeof str !== "string") return "";
31-
return str.replace(/[^a-zA-Z0-9_!§$()=\-\^°]+/g, "-").replace(/^-|-$/, "");
31+
return str.replace(/[^a-zA-Z0-9_!§$()=\-^°]+/g, "-").replace(/^-|-$/, "");
3232
}
3333

3434
// map number to a single character a-z, A-Z or <_ + number> if number is too big

lib/dependencies/HarmonyCompatibilityDependency.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
2121
const usedExports = dep.originModule.usedExports;
2222
if(usedExports && !Array.isArray(usedExports)) {
2323
const exportName = dep.originModule.exportsArgument || "exports";
24-
const content = `Object.defineProperty(${exportName}, \"__esModule\", { value: true });\n`;
24+
const content = `Object.defineProperty(${exportName}, "__esModule", { value: true });\n`;
2525
source.insert(-10, content);
2626
}
2727
}

0 commit comments

Comments
 (0)