webpack 2.2.0 → 2.2.1
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.
- package/README.md +39 -63
- package/lib/APIPlugin.js +2 -8
- package/lib/AsyncDependenciesBlock.js +46 -55
- package/lib/ChunkTemplate.js +25 -26
- package/lib/CompatibilityPlugin.js +49 -46
- package/lib/Compilation.js +279 -138
- package/lib/ConstPlugin.js +2 -6
- package/lib/DefinePlugin.js +9 -27
- package/lib/EnvironmentPlugin.js +25 -9
- package/lib/EvalDevToolModulePlugin.js +15 -10
- package/lib/EvalSourceMapDevToolPlugin.js +24 -18
- package/lib/ExtendedAPIPlugin.js +1 -6
- package/lib/FlagDependencyExportsPlugin.js +72 -79
- package/lib/FlagInitialModulesAsUsedPlugin.js +17 -13
- package/lib/FunctionModulePlugin.js +17 -11
- package/lib/HotModuleReplacementPlugin.js +3 -13
- package/lib/HotUpdateChunkTemplate.js +21 -22
- package/lib/JsonpTemplatePlugin.js +15 -11
- package/lib/LoaderTargetPlugin.js +14 -10
- package/lib/MainTemplate.js +193 -191
- package/lib/MultiWatching.js +16 -14
- package/lib/NoEmitOnErrorsPlugin.js +14 -11
- package/lib/NodeStuffPlugin.js +6 -30
- package/lib/NormalModuleFactory.js +2 -2
- package/lib/NormalModuleReplacementPlugin.js +36 -31
- package/lib/Parser.js +8 -7
- package/lib/ParserHelpers.js +19 -5
- package/lib/ProvidePlugin.js +2 -6
- package/lib/RequestShortener.js +49 -47
- package/lib/RequireJsStuffPlugin.js +5 -20
- package/lib/RuleSet.js +28 -20
- package/lib/Template.js +133 -132
- package/lib/compareLocations.js +9 -8
- package/lib/dependencies/AMDPlugin.js +111 -115
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +157 -154
- package/lib/dependencies/CommonJsPlugin.js +81 -85
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +73 -75
- package/lib/dependencies/ContextDependencyTemplateAsId.js +21 -18
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +23 -29
- package/lib/dependencies/CriticalDependencyWarning.js +13 -8
- package/lib/dependencies/{HarmonyCompatiblilityDependency.js → HarmonyCompatibilityDependency.js} +3 -3
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +2 -2
- package/lib/dependencies/HarmonyModulesPlugin.js +51 -49
- package/lib/dependencies/ImportParserPlugin.js +31 -28
- package/lib/dependencies/ImportPlugin.js +28 -24
- package/lib/dependencies/LocalModule.js +17 -13
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +15 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +15 -17
- package/lib/dependencies/RequireContextPlugin.js +59 -57
- package/lib/dependencies/RequireEnsurePlugin.js +22 -26
- package/lib/dependencies/RequireIncludePlugin.js +18 -23
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +59 -56
- package/lib/dependencies/SystemPlugin.js +34 -36
- package/lib/dependencies/WebpackMissingModule.js +10 -18
- package/lib/node/NodeTargetPlugin.js +8 -5
- package/lib/node/NodeWatchFileSystem.js +54 -53
- package/lib/optimize/CommonsChunkPlugin.js +163 -166
- package/lib/optimize/RemoveParentModulesPlugin.js +36 -27
- package/lib/validateSchema.js +18 -18
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +22 -20
- package/package.json +12 -6
@@ -2,90 +2,88 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
var CommonJsRequireDependency = require("./CommonJsRequireDependency");
|
7
|
-
var CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
|
8
|
-
var RequireHeaderDependency = require("./RequireHeaderDependency");
|
9
|
-
var LocalModuleDependency = require("./LocalModuleDependency");
|
10
|
-
var ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
11
|
-
var LocalModulesHelpers = require("./LocalModulesHelpers");
|
5
|
+
"use strict";
|
12
6
|
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
const CommonJsRequireDependency = require("./CommonJsRequireDependency");
|
8
|
+
const CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
|
9
|
+
const RequireHeaderDependency = require("./RequireHeaderDependency");
|
10
|
+
const LocalModuleDependency = require("./LocalModuleDependency");
|
11
|
+
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
12
|
+
const LocalModulesHelpers = require("./LocalModulesHelpers");
|
13
|
+
const ParserHelpers = require("../ParserHelpers");
|
16
14
|
|
17
|
-
|
15
|
+
class CommonJsRequireDependencyParserPlugin {
|
16
|
+
constructor(options) {
|
17
|
+
this.options = options;
|
18
|
+
}
|
18
19
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
return true;
|
26
|
-
});
|
27
|
-
parser.plugin("expression require", function(expr) {
|
28
|
-
var dep = new CommonJsRequireContextDependency(options.unknownContextRequest, options.unknownContextRecursive, options.unknownContextRegExp, expr.range);
|
29
|
-
dep.critical = options.unknownContextCritical && "require function is used in a way in which dependencies cannot be statically extracted";
|
30
|
-
dep.loc = expr.loc;
|
31
|
-
dep.optional = !!this.scope.inTry;
|
32
|
-
this.state.current.addDependency(dep);
|
33
|
-
return true;
|
34
|
-
});
|
35
|
-
parser.plugin("call require", function(expr) {
|
36
|
-
if(expr.arguments.length !== 1) return;
|
37
|
-
var localModule, dep;
|
38
|
-
var param = this.evaluateExpression(expr.arguments[0]);
|
39
|
-
if(param.isConditional()) {
|
40
|
-
var isExpression = false;
|
41
|
-
var prevLength = this.state.current.dependencies.length;
|
42
|
-
dep = new RequireHeaderDependency(expr.callee.range);
|
20
|
+
apply(parser) {
|
21
|
+
const options = this.options;
|
22
|
+
parser.plugin("expression require.cache", ParserHelpers.toConstantDependency("__webpack_require__.c"));
|
23
|
+
parser.plugin("expression require", (expr) => {
|
24
|
+
const dep = new CommonJsRequireContextDependency(options.unknownContextRequest, options.unknownContextRecursive, options.unknownContextRegExp, expr.range);
|
25
|
+
dep.critical = options.unknownContextCritical && "require function is used in a way in which dependencies cannot be statically extracted";
|
43
26
|
dep.loc = expr.loc;
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
27
|
+
dep.optional = !!parser.scope.inTry;
|
28
|
+
parser.state.current.addDependency(dep);
|
29
|
+
return true;
|
30
|
+
});
|
31
|
+
parser.plugin("call require", (expr) => {
|
32
|
+
if(expr.arguments.length !== 1) return;
|
33
|
+
let localModule, dep;
|
34
|
+
const param = parser.evaluateExpression(expr.arguments[0]);
|
35
|
+
if(param.isConditional()) {
|
36
|
+
let isExpression = false;
|
37
|
+
const prevLength = parser.state.current.dependencies.length;
|
38
|
+
dep = new RequireHeaderDependency(expr.callee.range);
|
39
|
+
dep.loc = expr.loc;
|
40
|
+
parser.state.current.addDependency(dep);
|
41
|
+
param.options.forEach(function(param) {
|
42
|
+
const result = parser.applyPluginsBailResult("call require:commonjs:item", expr, param);
|
43
|
+
if(result === undefined) {
|
44
|
+
isExpression = true;
|
45
|
+
}
|
46
|
+
});
|
47
|
+
if(isExpression) {
|
48
|
+
parser.state.current.dependencies.length = prevLength;
|
49
|
+
} else {
|
50
|
+
return true;
|
49
51
|
}
|
50
|
-
}
|
51
|
-
if(
|
52
|
-
|
52
|
+
}
|
53
|
+
if(param.isString() && (localModule = LocalModulesHelpers.getLocalModule(parser.state, param.string))) {
|
54
|
+
dep = new LocalModuleDependency(localModule, expr.range);
|
55
|
+
dep.loc = expr.loc;
|
56
|
+
parser.state.current.addDependency(dep);
|
57
|
+
return true;
|
53
58
|
} else {
|
59
|
+
const result = parser.applyPluginsBailResult("call require:commonjs:item", expr, param);
|
60
|
+
if(result === undefined) {
|
61
|
+
parser.applyPluginsBailResult("call require:commonjs:context", expr, param);
|
62
|
+
} else {
|
63
|
+
dep = new RequireHeaderDependency(expr.callee.range);
|
64
|
+
dep.loc = expr.loc;
|
65
|
+
parser.state.current.addDependency(dep);
|
66
|
+
}
|
54
67
|
return true;
|
55
68
|
}
|
56
|
-
}
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
this.state.current.addDependency(dep);
|
61
|
-
return true;
|
62
|
-
} else {
|
63
|
-
var result = this.applyPluginsBailResult("call require:commonjs:item", expr, param);
|
64
|
-
if(result === undefined) {
|
65
|
-
this.applyPluginsBailResult("call require:commonjs:context", expr, param);
|
66
|
-
} else {
|
67
|
-
dep = new RequireHeaderDependency(expr.callee.range);
|
69
|
+
});
|
70
|
+
parser.plugin("call require:commonjs:item", (expr, param) => {
|
71
|
+
if(param.isString()) {
|
72
|
+
const dep = new CommonJsRequireDependency(param.string, param.range);
|
68
73
|
dep.loc = expr.loc;
|
69
|
-
|
74
|
+
dep.optional = !!parser.scope.inTry;
|
75
|
+
parser.state.current.addDependency(dep);
|
76
|
+
return true;
|
70
77
|
}
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
if(param.isString()) {
|
76
|
-
var dep = new CommonJsRequireDependency(param.string, param.range);
|
78
|
+
});
|
79
|
+
parser.plugin("call require:commonjs:context", (expr, param) => {
|
80
|
+
const dep = ContextDependencyHelpers.create(CommonJsRequireContextDependency, expr.range, param, expr, options);
|
81
|
+
if(!dep) return;
|
77
82
|
dep.loc = expr.loc;
|
78
|
-
dep.optional = !!
|
79
|
-
|
83
|
+
dep.optional = !!parser.scope.inTry;
|
84
|
+
parser.state.current.addDependency(dep);
|
80
85
|
return true;
|
81
|
-
}
|
82
|
-
}
|
83
|
-
|
84
|
-
|
85
|
-
if(!dep) return;
|
86
|
-
dep.loc = expr.loc;
|
87
|
-
dep.optional = !!this.scope.inTry;
|
88
|
-
this.state.current.addDependency(dep);
|
89
|
-
return true;
|
90
|
-
});
|
91
|
-
};
|
86
|
+
});
|
87
|
+
}
|
88
|
+
}
|
89
|
+
module.exports = CommonJsRequireDependencyParserPlugin;
|
@@ -2,27 +2,30 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class ContextDependencyTemplateAsId {
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
apply(dep, source, outputOptions, requestShortener) {
|
10
|
+
let comment = "";
|
11
|
+
if(outputOptions.pathinfo) comment = "/*! " + requestShortener.shorten(dep.request) + " */ ";
|
12
|
+
if(dep.module && dep.module.dependencies && dep.module.dependencies.length > 0) {
|
13
|
+
if(dep.valueRange) {
|
14
|
+
if(Array.isArray(dep.replaces)) {
|
15
|
+
for(let i = 0; i < dep.replaces.length; i++) {
|
16
|
+
const rep = dep.replaces[i];
|
17
|
+
source.replace(rep.range[0], rep.range[1] - 1, rep.value);
|
18
|
+
}
|
17
19
|
}
|
20
|
+
source.replace(dep.valueRange[1], dep.range[1] - 1, ")");
|
21
|
+
source.replace(dep.range[0], dep.valueRange[0] - 1, "__webpack_require__(" + comment + JSON.stringify(dep.module.id) + ").resolve(" + (typeof dep.prepend === "string" ? JSON.stringify(dep.prepend) : "") + "");
|
22
|
+
} else {
|
23
|
+
source.replace(dep.range[0], dep.range[1] - 1, "__webpack_require__(" + comment + JSON.stringify(dep.module.id) + ").resolve");
|
18
24
|
}
|
19
|
-
source.replace(dep.valueRange[1], dep.range[1] - 1, ")");
|
20
|
-
source.replace(dep.range[0], dep.valueRange[0] - 1, "__webpack_require__(" + comment + JSON.stringify(dep.module.id) + ").resolve(" + (typeof dep.prepend === "string" ? JSON.stringify(dep.prepend) : "") + "");
|
21
25
|
} else {
|
22
|
-
|
26
|
+
const content = require("./WebpackMissingModule").module(dep.request);
|
27
|
+
source.replace(dep.range[0], dep.range[1] - 1, content);
|
23
28
|
}
|
24
|
-
} else {
|
25
|
-
var content = require("./WebpackMissingModule").module(dep.request);
|
26
|
-
source.replace(dep.range[0], dep.range[1] - 1, content);
|
27
29
|
}
|
28
|
-
}
|
30
|
+
}
|
31
|
+
module.exports = ContextDependencyTemplateAsId;
|
@@ -2,38 +2,32 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class ContextDependencyTemplateAsRequireCall {
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
apply(dep, source, outputOptions, requestShortener) {
|
10
|
+
let comment = "";
|
11
|
+
if(outputOptions.pathinfo) comment = "/*! " + requestShortener.shorten(dep.request) + " */ ";
|
12
|
+
const containsDeps = dep.module && dep.module.dependencies && dep.module.dependencies.length > 0;
|
13
|
+
const isAsync = dep.module && dep.module.async;
|
14
|
+
if(dep.module && (isAsync || containsDeps)) {
|
15
|
+
if(dep.valueRange) {
|
16
|
+
if(Array.isArray(dep.replaces)) {
|
17
|
+
for(let i = 0; i < dep.replaces.length; i++) {
|
18
|
+
const rep = dep.replaces[i];
|
19
|
+
source.replace(rep.range[0], rep.range[1] - 1, rep.value);
|
20
|
+
}
|
19
21
|
}
|
22
|
+
source.replace(dep.valueRange[1], dep.range[1] - 1, ")");
|
23
|
+
source.replace(dep.range[0], dep.valueRange[0] - 1, "__webpack_require__(" + comment + JSON.stringify(dep.module.id) + ")(" + (typeof dep.prepend === "string" ? JSON.stringify(dep.prepend) : "") + "");
|
24
|
+
} else {
|
25
|
+
source.replace(dep.range[0], dep.range[1] - 1, "__webpack_require__(" + comment + JSON.stringify(dep.module.id) + ")");
|
20
26
|
}
|
21
|
-
source.replace(dep.valueRange[1], dep.range[1] - 1, ")");
|
22
|
-
source.replace(dep.range[0], dep.valueRange[0] - 1, "__webpack_require__(" + comment + JSON.stringify(dep.module.id) + ")(" + (typeof dep.prepend === "string" ? JSON.stringify(dep.prepend) : "") + "");
|
23
27
|
} else {
|
24
|
-
|
28
|
+
const content = require("./WebpackMissingModule").module(dep.request);
|
29
|
+
source.replace(dep.range[0], dep.range[1] - 1, content);
|
25
30
|
}
|
26
|
-
} else {
|
27
|
-
var content = require("./WebpackMissingModule").module(dep.request);
|
28
|
-
source.replace(dep.range[0], dep.range[1] - 1, content);
|
29
31
|
}
|
30
|
-
}
|
31
|
-
|
32
|
-
ContextDependencyTemplateAsRequireCall.prototype.applyAsTemplateArgument = function(name, dep, source) {
|
33
|
-
if(dep.valueRange) {
|
34
|
-
source.replace(dep.valueRange[1], dep.range[1] - 1, ")");
|
35
|
-
source.replace(dep.range[0], dep.valueRange[0] - 1, "__webpack_require__(" + name + ")(" + (typeof dep.prepend === "string" ? JSON.stringify(dep.prepend) : "") + "");
|
36
|
-
} else {
|
37
|
-
source.replace(dep.range[0], dep.range[1] - 1, "__webpack_require__(" + name + ")");
|
38
|
-
}
|
39
|
-
};
|
32
|
+
}
|
33
|
+
module.exports = ContextDependencyTemplateAsRequireCall;
|
@@ -2,13 +2,18 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class CriticalDependencyWarning extends Error {
|
8
|
+
|
9
|
+
constructor(message) {
|
10
|
+
super();
|
11
|
+
if(Error.hasOwnProperty("captureStackTrace")) {
|
12
|
+
Error.captureStackTrace(this, this.constructor);
|
13
|
+
}
|
14
|
+
this.name = "CriticalDependencyWarning";
|
15
|
+
this.message = "Critical dependency: " + message;
|
16
|
+
}
|
10
17
|
}
|
11
|
-
module.exports = CriticalDependencyWarning;
|
12
18
|
|
13
|
-
|
14
|
-
CriticalDependencyWarning.prototype.constructor = CriticalDependencyWarning;
|
19
|
+
module.exports = CriticalDependencyWarning;
|
package/lib/dependencies/{HarmonyCompatiblilityDependency.js → HarmonyCompatibilityDependency.js}
RENAMED
@@ -5,7 +5,7 @@
|
|
5
5
|
"use strict";
|
6
6
|
const NullDependency = require("./NullDependency");
|
7
7
|
|
8
|
-
class
|
8
|
+
class HarmonyCompatibilityDependency extends NullDependency {
|
9
9
|
constructor(originModule) {
|
10
10
|
super();
|
11
11
|
this.originModule = originModule;
|
@@ -16,7 +16,7 @@ class HarmonyCompatiblilityDependency extends NullDependency {
|
|
16
16
|
}
|
17
17
|
}
|
18
18
|
|
19
|
-
|
19
|
+
HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate {
|
20
20
|
apply(dep, source) {
|
21
21
|
const usedExports = dep.originModule.usedExports;
|
22
22
|
if(usedExports && !Array.isArray(usedExports)) {
|
@@ -27,4 +27,4 @@ HarmonyCompatiblilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
27
27
|
}
|
28
28
|
};
|
29
29
|
|
30
|
-
module.exports =
|
30
|
+
module.exports = HarmonyCompatibilityDependency;
|
@@ -4,7 +4,7 @@
|
|
4
4
|
*/
|
5
5
|
"use strict";
|
6
6
|
|
7
|
-
const
|
7
|
+
const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
|
8
8
|
|
9
9
|
module.exports = class HarmonyDetectionParserPlugin {
|
10
10
|
apply(parser) {
|
@@ -14,7 +14,7 @@ module.exports = class HarmonyDetectionParserPlugin {
|
|
14
14
|
});
|
15
15
|
if(isHarmony) {
|
16
16
|
let module = parser.state.module;
|
17
|
-
const dep = new
|
17
|
+
const dep = new HarmonyCompatibilityDependency(module);
|
18
18
|
dep.loc = {
|
19
19
|
start: {
|
20
20
|
line: -1,
|
@@ -2,66 +2,68 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
function HarmonyModulesPlugin() {}
|
22
|
-
module.exports = HarmonyModulesPlugin;
|
5
|
+
"use strict";
|
6
|
+
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
7
|
+
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
8
|
+
const HarmonyCompatiblilityDependency = require("./HarmonyCompatibilityDependency");
|
9
|
+
const HarmonyExportHeaderDependency = require("./HarmonyExportHeaderDependency");
|
10
|
+
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
|
11
|
+
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency");
|
12
|
+
const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImportedSpecifierDependency");
|
13
|
+
const HarmonyAcceptDependency = require("./HarmonyAcceptDependency");
|
14
|
+
const HarmonyAcceptImportDependency = require("./HarmonyAcceptImportDependency");
|
15
|
+
|
16
|
+
const NullFactory = require("../NullFactory");
|
17
|
+
|
18
|
+
const HarmonyDetectionParserPlugin = require("./HarmonyDetectionParserPlugin");
|
19
|
+
const HarmonyImportDependencyParserPlugin = require("./HarmonyImportDependencyParserPlugin");
|
20
|
+
const HarmonyExportDependencyParserPlugin = require("./HarmonyExportDependencyParserPlugin");
|
23
21
|
|
24
|
-
HarmonyModulesPlugin
|
25
|
-
compiler.plugin("compilation", function(compilation, params) {
|
26
|
-
var normalModuleFactory = params.normalModuleFactory;
|
22
|
+
class HarmonyModulesPlugin {
|
27
23
|
|
28
|
-
|
29
|
-
|
24
|
+
apply(compiler) {
|
25
|
+
compiler.plugin("compilation", (compilation, params) => {
|
26
|
+
const normalModuleFactory = params.normalModuleFactory;
|
30
27
|
|
31
|
-
|
32
|
-
|
28
|
+
compilation.dependencyFactories.set(HarmonyImportDependency, normalModuleFactory);
|
29
|
+
compilation.dependencyTemplates.set(HarmonyImportDependency, new HarmonyImportDependency.Template());
|
33
30
|
|
34
|
-
|
35
|
-
|
31
|
+
compilation.dependencyFactories.set(HarmonyImportSpecifierDependency, new NullFactory());
|
32
|
+
compilation.dependencyTemplates.set(HarmonyImportSpecifierDependency, new HarmonyImportSpecifierDependency.Template());
|
36
33
|
|
37
|
-
|
38
|
-
|
34
|
+
compilation.dependencyFactories.set(HarmonyCompatiblilityDependency, new NullFactory());
|
35
|
+
compilation.dependencyTemplates.set(HarmonyCompatiblilityDependency, new HarmonyCompatiblilityDependency.Template());
|
39
36
|
|
40
|
-
|
41
|
-
|
37
|
+
compilation.dependencyFactories.set(HarmonyExportHeaderDependency, new NullFactory());
|
38
|
+
compilation.dependencyTemplates.set(HarmonyExportHeaderDependency, new HarmonyExportHeaderDependency.Template());
|
42
39
|
|
43
|
-
|
44
|
-
|
40
|
+
compilation.dependencyFactories.set(HarmonyExportExpressionDependency, new NullFactory());
|
41
|
+
compilation.dependencyTemplates.set(HarmonyExportExpressionDependency, new HarmonyExportExpressionDependency.Template());
|
45
42
|
|
46
|
-
|
47
|
-
|
43
|
+
compilation.dependencyFactories.set(HarmonyExportSpecifierDependency, new NullFactory());
|
44
|
+
compilation.dependencyTemplates.set(HarmonyExportSpecifierDependency, new HarmonyExportSpecifierDependency.Template());
|
48
45
|
|
49
|
-
|
50
|
-
|
46
|
+
compilation.dependencyFactories.set(HarmonyExportImportedSpecifierDependency, new NullFactory());
|
47
|
+
compilation.dependencyTemplates.set(HarmonyExportImportedSpecifierDependency, new HarmonyExportImportedSpecifierDependency.Template());
|
51
48
|
|
52
|
-
|
53
|
-
|
49
|
+
compilation.dependencyFactories.set(HarmonyAcceptDependency, new NullFactory());
|
50
|
+
compilation.dependencyTemplates.set(HarmonyAcceptDependency, new HarmonyAcceptDependency.Template());
|
54
51
|
|
55
|
-
|
52
|
+
compilation.dependencyFactories.set(HarmonyAcceptImportDependency, normalModuleFactory);
|
53
|
+
compilation.dependencyTemplates.set(HarmonyAcceptImportDependency, new HarmonyAcceptImportDependency.Template());
|
56
54
|
|
57
|
-
|
58
|
-
return;
|
55
|
+
params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
|
59
56
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
57
|
+
if(typeof parserOptions.harmony !== "undefined" && !parserOptions.harmony)
|
58
|
+
return;
|
59
|
+
|
60
|
+
parser.apply(
|
61
|
+
new HarmonyDetectionParserPlugin(),
|
62
|
+
new HarmonyImportDependencyParserPlugin(),
|
63
|
+
new HarmonyExportDependencyParserPlugin()
|
64
|
+
);
|
65
|
+
});
|
65
66
|
});
|
66
|
-
}
|
67
|
-
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
module.exports = HarmonyModulesPlugin;
|
@@ -2,34 +2,37 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
var ImportDependenciesBlock = require("./ImportDependenciesBlock");
|
7
|
-
var ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
5
|
+
"use strict";
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
const ImportContextDependency = require("./ImportContextDependency");
|
8
|
+
const ImportDependenciesBlock = require("./ImportDependenciesBlock");
|
9
|
+
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
12
10
|
|
13
|
-
|
11
|
+
class ImportParserPlugin {
|
12
|
+
constructor(options) {
|
13
|
+
this.options = options;
|
14
|
+
}
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
}
|
16
|
+
apply(parser) {
|
17
|
+
const options = this.options;
|
18
|
+
parser.plugin(["call System.import", "import-call"], (expr) => {
|
19
|
+
if(expr.arguments.length !== 1)
|
20
|
+
throw new Error("Incorrect number of arguments provided to 'import(module: string) -> Promise'.");
|
21
|
+
let dep;
|
22
|
+
const param = parser.evaluateExpression(expr.arguments[0]);
|
23
|
+
if(param.isString()) {
|
24
|
+
const depBlock = new ImportDependenciesBlock(param.string, expr.range, parser.state.module, expr.loc);
|
25
|
+
parser.state.current.addBlock(depBlock);
|
26
|
+
return true;
|
27
|
+
} else {
|
28
|
+
dep = ContextDependencyHelpers.create(ImportContextDependency, expr.range, param, expr, options);
|
29
|
+
if(!dep) return;
|
30
|
+
dep.loc = expr.loc;
|
31
|
+
dep.optional = !!parser.scope.inTry;
|
32
|
+
parser.state.current.addDependency(dep);
|
33
|
+
return true;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
}
|
37
|
+
}
|
38
|
+
module.exports = ImportParserPlugin;
|
@@ -2,35 +2,39 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
var ImportContextDependency = require("./ImportContextDependency");
|
7
|
-
var ImportParserPlugin = require("./ImportParserPlugin");
|
5
|
+
"use strict";
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
const ImportDependency = require("./ImportDependency");
|
8
|
+
const ImportContextDependency = require("./ImportContextDependency");
|
9
|
+
const ImportParserPlugin = require("./ImportParserPlugin");
|
10
|
+
|
11
|
+
class ImportPlugin {
|
12
|
+
constructor(options) {
|
13
|
+
this.options = options;
|
14
|
+
}
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
apply(compiler) {
|
17
|
+
const options = this.options;
|
18
|
+
compiler.plugin("compilation", (compilation, params) => {
|
19
|
+
const normalModuleFactory = params.normalModuleFactory;
|
20
|
+
const contextModuleFactory = params.contextModuleFactory;
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
+
compilation.dependencyFactories.set(ImportDependency, normalModuleFactory);
|
23
|
+
compilation.dependencyTemplates.set(ImportDependency, new ImportDependency.Template());
|
22
24
|
|
23
|
-
|
24
|
-
|
25
|
+
compilation.dependencyFactories.set(ImportContextDependency, contextModuleFactory);
|
26
|
+
compilation.dependencyTemplates.set(ImportContextDependency, new ImportContextDependency.Template());
|
25
27
|
|
26
|
-
|
28
|
+
params.normalModuleFactory.plugin("parser", (parser, parserOptions) => {
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
+
if(typeof parserOptions.import !== "undefined" && !parserOptions.import)
|
31
|
+
return;
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
33
|
+
parser.apply(
|
34
|
+
new ImportParserPlugin(options)
|
35
|
+
);
|
36
|
+
});
|
34
37
|
});
|
35
|
-
}
|
36
|
-
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
module.exports = ImportPlugin;
|
@@ -2,18 +2,22 @@
|
|
2
2
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
3
|
Author Tobias Koppers @sokra
|
4
4
|
*/
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class LocalModule {
|
8
|
+
constructor(module, name, idx) {
|
9
|
+
this.module = module;
|
10
|
+
this.name = name;
|
11
|
+
this.idx = idx;
|
12
|
+
this.used = false;
|
13
|
+
}
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
}
|
15
|
+
flagUsed() {
|
16
|
+
this.used = true;
|
17
|
+
}
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
}
|
19
|
+
variableName() {
|
20
|
+
return "__WEBPACK_LOCAL_MODULE_" + this.idx + "__";
|
21
|
+
}
|
22
|
+
}
|
23
|
+
module.exports = LocalModule;
|