webpack 3.6.0 → 3.8.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/LICENSE +20 -20
- package/README.md +716 -716
- package/bin/convert-argv.js +1 -1
- package/bin/webpack.js +6 -0
- package/buildin/.eslintrc +7 -7
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +21 -21
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/.eslintrc +9 -9
- package/hot/dev-server.js +53 -53
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +38 -38
- package/hot/log.js +44 -44
- package/hot/only-dev-server.js +71 -71
- package/hot/poll.js +34 -34
- package/hot/signal.js +51 -51
- package/lib/APIPlugin.js +45 -45
- package/lib/AsyncDependenciesBlock.js +43 -43
- package/lib/AsyncDependencyToInitialChunkWarning.js +21 -0
- package/lib/AutomaticPrefetchPlugin.js +36 -36
- package/lib/BasicEvaluatedExpression.js +203 -203
- package/lib/CaseSensitiveModulesWarning.js +49 -49
- package/lib/Chunk.js +3 -0
- package/lib/ChunkRenderError.js +24 -24
- package/lib/ChunkTemplate.js +36 -36
- package/lib/CompatibilityPlugin.js +57 -57
- package/lib/Compilation.js +158 -51
- package/lib/Compiler.js +523 -523
- package/lib/ConstPlugin.js +60 -60
- package/lib/ContextExclusionPlugin.js +17 -0
- package/lib/ContextModule.js +431 -431
- package/lib/ContextModuleFactory.js +14 -5
- package/lib/ContextReplacementPlugin.js +111 -111
- package/lib/DefinePlugin.js +123 -123
- package/lib/DelegatedModule.js +98 -92
- package/lib/DelegatedModuleFactoryPlugin.js +59 -59
- package/lib/DelegatedPlugin.js +30 -30
- package/lib/DependenciesBlockVariable.js +51 -51
- package/lib/DllEntryPlugin.js +37 -37
- package/lib/DllModule.js +58 -58
- package/lib/DllModuleFactory.js +20 -20
- package/lib/DllPlugin.js +38 -38
- package/lib/DllReferencePlugin.js +62 -62
- package/lib/DynamicEntryPlugin.js +59 -59
- package/lib/EntryModuleNotFoundError.js +22 -22
- package/lib/EntryOptionPlugin.js +31 -31
- package/lib/EnvironmentPlugin.js +50 -50
- package/lib/ErrorHelpers.js +31 -31
- package/lib/EvalDevToolModulePlugin.js +22 -22
- package/lib/EvalDevToolModuleTemplatePlugin.js +33 -33
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +75 -75
- package/lib/EvalSourceMapDevToolPlugin.js +32 -32
- package/lib/ExportPropertyMainTemplatePlugin.js +31 -31
- package/lib/ExtendedAPIPlugin.js +47 -47
- package/lib/ExternalModule.js +7 -0
- package/lib/ExternalModuleFactoryPlugin.js +91 -91
- package/lib/ExternalsPlugin.js +21 -21
- package/lib/FlagDependencyExportsPlugin.js +101 -101
- package/lib/FunctionModulePlugin.js +24 -24
- package/lib/FunctionModuleTemplatePlugin.js +7 -3
- package/lib/HashedModuleIdsPlugin.js +42 -42
- package/lib/HotUpdateChunkTemplate.js +31 -31
- package/lib/IgnorePlugin.js +69 -69
- package/lib/JsonpExportMainTemplatePlugin.js +37 -37
- package/lib/JsonpHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/JsonpMainTemplate.runtime.js +2 -1
- package/lib/JsonpMainTemplatePlugin.js +2 -0
- package/lib/JsonpTemplatePlugin.js +21 -21
- package/lib/LibManifestPlugin.js +63 -63
- package/lib/LibraryTemplatePlugin.js +92 -92
- package/lib/LoaderOptionsPlugin.js +36 -36
- package/lib/LoaderTargetPlugin.js +19 -19
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +22 -22
- package/lib/ModuleDependencyWarning.js +22 -22
- package/lib/ModuleError.js +24 -24
- package/lib/ModuleFilenameHelpers.js +162 -162
- package/lib/ModuleNotFoundError.js +26 -26
- package/lib/ModuleParseError.js +1 -1
- package/lib/ModuleReason.js +50 -50
- package/lib/ModuleTemplate.js +23 -23
- package/lib/ModuleWarning.js +24 -24
- package/lib/MovedToPluginWarningPlugin.js +21 -21
- package/lib/MultiCompiler.js +164 -164
- package/lib/MultiEntryPlugin.js +39 -39
- package/lib/MultiModuleFactory.js +19 -19
- package/lib/MultiStats.js +79 -79
- package/lib/MultiWatching.js +32 -32
- package/lib/NamedChunksPlugin.js +30 -30
- package/lib/NamedModulesPlugin.js +27 -27
- package/lib/NewWatchingPlugin.js +15 -15
- package/lib/NoEmitOnErrorsPlugin.js +22 -22
- package/lib/NoErrorsPlugin.js +29 -29
- package/lib/NodeStuffPlugin.js +97 -97
- package/lib/NormalModuleReplacementPlugin.js +45 -45
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/Parser.js +65 -34
- package/lib/ParserHelpers.js +85 -85
- package/lib/PrefetchPlugin.js +31 -31
- package/lib/ProgressPlugin.js +192 -192
- package/lib/ProvidePlugin.js +55 -55
- package/lib/RawModule.js +54 -54
- package/lib/RequestShortener.js +63 -63
- package/lib/RequireJsStuffPlugin.js +31 -31
- package/lib/RuleSet.js +444 -444
- package/lib/SetVarMainTemplatePlugin.js +41 -41
- package/lib/SingleEntryPlugin.js +35 -35
- package/lib/SizeFormatHelpers.js +18 -18
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +37 -37
- package/lib/Stats.js +27 -8
- package/lib/UmdMainTemplatePlugin.js +1 -1
- package/lib/UnsupportedFeatureWarning.js +21 -21
- package/lib/UseStrictPlugin.js +34 -34
- package/lib/WarnCaseSensitiveModulesPlugin.js +31 -31
- package/lib/WatchIgnorePlugin.js +49 -49
- package/lib/WebpackError.js +11 -11
- package/lib/WebpackOptionsDefaulter.js +129 -129
- package/lib/WebpackOptionsValidationError.js +196 -196
- package/lib/compareLocations.js +36 -36
- package/lib/dependencies/AMDDefineDependency.js +142 -142
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -1
- package/lib/dependencies/AMDPlugin.js +119 -119
- package/lib/dependencies/AMDRequireArrayDependency.js +2 -0
- package/lib/dependencies/AMDRequireContextDependency.js +0 -9
- package/lib/dependencies/AMDRequireDependenciesBlock.js +33 -33
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +177 -177
- package/lib/dependencies/AMDRequireDependency.js +67 -67
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireContextDependency.js +0 -10
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +89 -89
- package/lib/dependencies/ConstDependency.js +32 -32
- package/lib/dependencies/ContextDependency.js +20 -0
- package/lib/dependencies/ContextDependencyHelpers.js +71 -71
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyCompatibilityDependency.js +30 -30
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +14 -2
- package/lib/dependencies/HarmonyExportExpressionDependency.js +0 -7
- package/lib/dependencies/HarmonyExportHeaderDependency.js +28 -28
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +45 -45
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +0 -13
- package/lib/dependencies/HarmonyModulesHelpers.js +0 -53
- package/lib/dependencies/ImportContextDependency.js +0 -10
- package/lib/dependencies/ImportDependenciesBlock.js +17 -17
- package/lib/dependencies/ImportEagerContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyContextDependency.js +22 -22
- package/lib/dependencies/ImportLazyOnceContextDependency.js +22 -22
- package/lib/dependencies/ImportParserPlugin.js +89 -89
- package/lib/dependencies/ImportPlugin.js +60 -60
- package/lib/dependencies/ImportWeakContextDependency.js +22 -22
- package/lib/dependencies/LoaderDependency.js +18 -18
- package/lib/dependencies/LoaderPlugin.js +60 -60
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModuleDependency.js +24 -24
- package/lib/dependencies/LocalModulesHelpers.js +46 -46
- package/lib/dependencies/ModuleDependency.js +23 -23
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +24 -24
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +26 -26
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +50 -50
- package/lib/dependencies/RequireContextPlugin.js +96 -96
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +22 -22
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +102 -102
- package/lib/dependencies/RequireEnsureDependency.js +38 -38
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +40 -40
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +21 -21
- package/lib/dependencies/RequireIncludePlugin.js +33 -33
- package/lib/dependencies/RequireResolveContextDependency.js +0 -10
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +71 -71
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +44 -44
- package/lib/dependencies/UnsupportedDependency.js +23 -23
- package/lib/dependencies/WebpackMissingModule.js +18 -18
- package/lib/dependencies/getFunctionExpression.js +44 -44
- package/lib/formatLocation.js +54 -54
- package/lib/node/NodeChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeEnvironmentPlugin.js +25 -25
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +27 -27
- package/lib/node/NodeMainTemplate.runtime.js +24 -24
- package/lib/node/NodeMainTemplateAsync.runtime.js +40 -40
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +88 -88
- package/lib/node/NodeTargetPlugin.js +15 -15
- package/lib/node/NodeTemplatePlugin.js +27 -27
- package/lib/node/NodeWatchFileSystem.js +72 -72
- package/lib/optimize/ChunkModuleIdRangePlugin.js +53 -53
- package/lib/optimize/CommonsChunkPlugin.js +40 -19
- package/lib/optimize/ConcatenatedModule.js +27 -24
- package/lib/optimize/DedupePlugin.js +15 -15
- package/lib/optimize/FlagIncludedChunksPlugin.js +35 -35
- package/lib/optimize/LimitChunkCountPlugin.js +59 -59
- package/lib/optimize/MinChunkSizePlugin.js +65 -65
- package/lib/optimize/RemoveEmptyChunksPlugin.js +21 -21
- package/lib/optimize/UglifyJsPlugin.js +9 -9
- package/lib/performance/AssetsOverSizeLimitWarning.js +23 -23
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +28 -28
- package/lib/performance/NoAsyncChunksWarning.js +20 -20
- package/lib/performance/SizeLimitsPlugin.js +102 -102
- package/lib/prepareOptions.js +29 -29
- package/lib/removeAndDo.js +15 -15
- package/lib/util/Queue.js +42 -0
- package/lib/util/Semaphore.js +32 -32
- package/lib/util/identifier.js +38 -38
- package/lib/validateSchema.js +66 -66
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webpack.js +1 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +29 -29
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +28 -28
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +58 -58
- package/lib/webworker/WebWorkerTemplatePlugin.js +20 -20
- package/package.json +1 -1
- package/schemas/ajv.absolutePath.js +29 -29
- package/schemas/webpackOptionsSchema.json +69 -0
@@ -1,20 +1,20 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const Dependency = require("../Dependency");
|
7
|
-
|
8
|
-
class DllEntryDependency extends Dependency {
|
9
|
-
constructor(dependencies, name) {
|
10
|
-
super();
|
11
|
-
this.dependencies = dependencies;
|
12
|
-
this.name = name;
|
13
|
-
}
|
14
|
-
|
15
|
-
get type() {
|
16
|
-
return "dll entry";
|
17
|
-
}
|
18
|
-
}
|
19
|
-
|
20
|
-
module.exports = DllEntryDependency;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const Dependency = require("../Dependency");
|
7
|
+
|
8
|
+
class DllEntryDependency extends Dependency {
|
9
|
+
constructor(dependencies, name) {
|
10
|
+
super();
|
11
|
+
this.dependencies = dependencies;
|
12
|
+
this.name = name;
|
13
|
+
}
|
14
|
+
|
15
|
+
get type() {
|
16
|
+
return "dll entry";
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
module.exports = DllEntryDependency;
|
@@ -1,30 +1,30 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const NullDependency = require("./NullDependency");
|
7
|
-
|
8
|
-
class HarmonyCompatibilityDependency extends NullDependency {
|
9
|
-
constructor(originModule) {
|
10
|
-
super();
|
11
|
-
this.originModule = originModule;
|
12
|
-
}
|
13
|
-
|
14
|
-
get type() {
|
15
|
-
return "harmony export header";
|
16
|
-
}
|
17
|
-
}
|
18
|
-
|
19
|
-
HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate {
|
20
|
-
apply(dep, source) {
|
21
|
-
const usedExports = dep.originModule.usedExports;
|
22
|
-
if(usedExports && !Array.isArray(usedExports)) {
|
23
|
-
const exportName = dep.originModule.exportsArgument || "exports";
|
24
|
-
const content = `Object.defineProperty(${exportName}, "__esModule", { value: true });\n`;
|
25
|
-
source.insert(-10, content);
|
26
|
-
}
|
27
|
-
}
|
28
|
-
};
|
29
|
-
|
30
|
-
module.exports = HarmonyCompatibilityDependency;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const NullDependency = require("./NullDependency");
|
7
|
+
|
8
|
+
class HarmonyCompatibilityDependency extends NullDependency {
|
9
|
+
constructor(originModule) {
|
10
|
+
super();
|
11
|
+
this.originModule = originModule;
|
12
|
+
}
|
13
|
+
|
14
|
+
get type() {
|
15
|
+
return "harmony export header";
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate {
|
20
|
+
apply(dep, source) {
|
21
|
+
const usedExports = dep.originModule.usedExports;
|
22
|
+
if(usedExports && !Array.isArray(usedExports)) {
|
23
|
+
const exportName = dep.originModule.exportsArgument || "exports";
|
24
|
+
const content = `Object.defineProperty(${exportName}, "__esModule", { value: true });\n`;
|
25
|
+
source.insert(-10, content);
|
26
|
+
}
|
27
|
+
}
|
28
|
+
};
|
29
|
+
|
30
|
+
module.exports = HarmonyCompatibilityDependency;
|
@@ -39,9 +39,11 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
39
39
|
parser.plugin("export specifier", (statement, id, name, idx) => {
|
40
40
|
const rename = parser.scope.renames[`$${id}`];
|
41
41
|
let dep;
|
42
|
+
const harmonyNamedExports = parser.state.harmonyNamedExports = parser.state.harmonyNamedExports || new Set();
|
43
|
+
harmonyNamedExports.add(name);
|
42
44
|
if(rename === "imported var") {
|
43
45
|
const settings = parser.state.harmonySpecifier[`$${id}`];
|
44
|
-
dep = new HarmonyExportImportedSpecifierDependency(parser.state.module, settings[0], settings[1], settings[2], name);
|
46
|
+
dep = new HarmonyExportImportedSpecifierDependency(parser.state.module, settings[0], settings[1], settings[2], name, harmonyNamedExports, null);
|
45
47
|
} else {
|
46
48
|
const immutable = statement.declaration && isImmutableStatement(statement.declaration);
|
47
49
|
const hoisted = statement.declaration && isHoistedStatement(statement.declaration);
|
@@ -53,7 +55,17 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
53
55
|
return true;
|
54
56
|
});
|
55
57
|
parser.plugin("export import specifier", (statement, source, id, name, idx) => {
|
56
|
-
const
|
58
|
+
const harmonyNamedExports = parser.state.harmonyNamedExports = parser.state.harmonyNamedExports || new Set();
|
59
|
+
let harmonyStarExports = null;
|
60
|
+
if(name) {
|
61
|
+
harmonyNamedExports.add(name);
|
62
|
+
} else {
|
63
|
+
harmonyStarExports = parser.state.harmonyStarExports = parser.state.harmonyStarExports || [];
|
64
|
+
}
|
65
|
+
const dep = new HarmonyExportImportedSpecifierDependency(parser.state.module, parser.state.lastHarmonyImport, HarmonyModulesHelpers.getModuleVar(parser.state, source), id, name, harmonyNamedExports, harmonyStarExports && harmonyStarExports.slice());
|
66
|
+
if(harmonyStarExports) {
|
67
|
+
harmonyStarExports.push(dep);
|
68
|
+
}
|
57
69
|
dep.loc = Object.create(statement.loc);
|
58
70
|
dep.loc.index = idx;
|
59
71
|
parser.state.current.addDependency(dep);
|
@@ -22,13 +22,6 @@ class HarmonyExportExpressionDependency extends NullDependency {
|
|
22
22
|
exports: ["default"]
|
23
23
|
};
|
24
24
|
}
|
25
|
-
|
26
|
-
describeHarmonyExport() {
|
27
|
-
return {
|
28
|
-
exportedName: "default",
|
29
|
-
precedence: 1,
|
30
|
-
};
|
31
|
-
}
|
32
25
|
}
|
33
26
|
|
34
27
|
HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTemplate {
|
@@ -1,28 +1,28 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const NullDependency = require("./NullDependency");
|
7
|
-
|
8
|
-
class HarmonyExportHeaderDependency extends NullDependency {
|
9
|
-
constructor(range, rangeStatement) {
|
10
|
-
super();
|
11
|
-
this.range = range;
|
12
|
-
this.rangeStatement = rangeStatement;
|
13
|
-
}
|
14
|
-
|
15
|
-
get type() {
|
16
|
-
return "harmony export header";
|
17
|
-
}
|
18
|
-
}
|
19
|
-
|
20
|
-
HarmonyExportHeaderDependency.Template = class HarmonyExportDependencyTemplate {
|
21
|
-
apply(dep, source) {
|
22
|
-
const content = "";
|
23
|
-
const replaceUntil = dep.range ? dep.range[0] - 1 : dep.rangeStatement[1] - 1;
|
24
|
-
source.replace(dep.rangeStatement[0], replaceUntil, content);
|
25
|
-
}
|
26
|
-
};
|
27
|
-
|
28
|
-
module.exports = HarmonyExportHeaderDependency;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const NullDependency = require("./NullDependency");
|
7
|
+
|
8
|
+
class HarmonyExportHeaderDependency extends NullDependency {
|
9
|
+
constructor(range, rangeStatement) {
|
10
|
+
super();
|
11
|
+
this.range = range;
|
12
|
+
this.rangeStatement = rangeStatement;
|
13
|
+
}
|
14
|
+
|
15
|
+
get type() {
|
16
|
+
return "harmony export header";
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
HarmonyExportHeaderDependency.Template = class HarmonyExportDependencyTemplate {
|
21
|
+
apply(dep, source) {
|
22
|
+
const content = "";
|
23
|
+
const replaceUntil = dep.range ? dep.range[0] - 1 : dep.rangeStatement[1] - 1;
|
24
|
+
source.replace(dep.rangeStatement[0], replaceUntil, content);
|
25
|
+
}
|
26
|
+
};
|
27
|
+
|
28
|
+
module.exports = HarmonyExportHeaderDependency;
|
@@ -4,16 +4,17 @@
|
|
4
4
|
*/
|
5
5
|
"use strict";
|
6
6
|
const NullDependency = require("./NullDependency");
|
7
|
-
const HarmonyModulesHelpers = require("./HarmonyModulesHelpers");
|
8
7
|
|
9
8
|
class HarmonyExportImportedSpecifierDependency extends NullDependency {
|
10
|
-
constructor(originModule, importDependency, importedVar, id, name) {
|
9
|
+
constructor(originModule, importDependency, importedVar, id, name, activeExports, otherStarExports) {
|
11
10
|
super();
|
12
11
|
this.originModule = originModule;
|
13
12
|
this.importDependency = importDependency;
|
14
13
|
this.importedVar = importedVar;
|
15
14
|
this.id = id;
|
16
15
|
this.name = name;
|
16
|
+
this.activeExports = activeExports;
|
17
|
+
this.otherStarExports = otherStarExports;
|
17
18
|
}
|
18
19
|
|
19
20
|
get type() {
|
@@ -23,10 +24,9 @@ class HarmonyExportImportedSpecifierDependency extends NullDependency {
|
|
23
24
|
getReference() {
|
24
25
|
const name = this.name;
|
25
26
|
const used = this.originModule.isUsed(name);
|
26
|
-
const active = HarmonyModulesHelpers.isActive(this.originModule, this);
|
27
27
|
const importedModule = this.importDependency.module;
|
28
28
|
|
29
|
-
if(!importedModule || !used || !
|
29
|
+
if(!importedModule || !used || !this.originModule.usedExports) return null;
|
30
30
|
|
31
31
|
const hasUsedExports = Array.isArray(this.originModule.usedExports);
|
32
32
|
|
@@ -50,21 +50,18 @@ class HarmonyExportImportedSpecifierDependency extends NullDependency {
|
|
50
50
|
}
|
51
51
|
|
52
52
|
const hasProvidedExports = Array.isArray(importedModule.providedExports);
|
53
|
+
const activeFromOtherStarExports = this._discoverActiveExportsFromOtherStartExports();
|
53
54
|
|
54
55
|
// export *
|
55
56
|
if(hasUsedExports) {
|
56
57
|
// reexport * with known used exports
|
57
|
-
const activeExports = HarmonyModulesHelpers.getActiveExports(this.originModule, this);
|
58
58
|
const importedNames = this.originModule.usedExports.filter(id => {
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
if(hasProvidedExports)
|
63
|
-
|
64
|
-
|
65
|
-
} else {
|
66
|
-
return notInActiveExports && notDefault;
|
67
|
-
}
|
59
|
+
if(id === "default") return false;
|
60
|
+
if(this.activeExports.has(id)) return false;
|
61
|
+
if(activeFromOtherStarExports.has(id)) return false;
|
62
|
+
if(hasProvidedExports && importedModule.providedExports.indexOf(id) < 0) return false;
|
63
|
+
|
64
|
+
return true;
|
68
65
|
});
|
69
66
|
|
70
67
|
return {
|
@@ -76,7 +73,13 @@ class HarmonyExportImportedSpecifierDependency extends NullDependency {
|
|
76
73
|
if(hasProvidedExports) {
|
77
74
|
return {
|
78
75
|
module: importedModule,
|
79
|
-
importedNames: importedModule.providedExports.filter(id =>
|
76
|
+
importedNames: importedModule.providedExports.filter(id => {
|
77
|
+
if(id === "default") return false;
|
78
|
+
if(this.activeExports.has(id)) return false;
|
79
|
+
if(activeFromOtherStarExports.has(id)) return false;
|
80
|
+
|
81
|
+
return true;
|
82
|
+
})
|
80
83
|
};
|
81
84
|
}
|
82
85
|
|
@@ -86,6 +89,21 @@ class HarmonyExportImportedSpecifierDependency extends NullDependency {
|
|
86
89
|
};
|
87
90
|
}
|
88
91
|
|
92
|
+
_discoverActiveExportsFromOtherStartExports() {
|
93
|
+
if(!this.otherStarExports)
|
94
|
+
return new Set();
|
95
|
+
const result = new Set();
|
96
|
+
// try to learn impossible exports from other star exports with provided exports
|
97
|
+
for(const otherStarExport of this.otherStarExports) {
|
98
|
+
const otherImportedModule = otherStarExport.importDependency.module;
|
99
|
+
if(otherImportedModule && Array.isArray(otherImportedModule.providedExports)) {
|
100
|
+
for(const exportName of otherImportedModule.providedExports)
|
101
|
+
result.add(exportName);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
return result;
|
105
|
+
}
|
106
|
+
|
89
107
|
getExports() {
|
90
108
|
if(this.name) {
|
91
109
|
return {
|
@@ -121,22 +139,6 @@ class HarmonyExportImportedSpecifierDependency extends NullDependency {
|
|
121
139
|
};
|
122
140
|
}
|
123
141
|
|
124
|
-
describeHarmonyExport() {
|
125
|
-
const importedModule = this.importDependency.module;
|
126
|
-
if(!this.name && importedModule && Array.isArray(importedModule.providedExports)) {
|
127
|
-
// for a star export and when we know which exports are provided, we can tell so
|
128
|
-
return {
|
129
|
-
exportedName: importedModule.providedExports,
|
130
|
-
precedence: 3
|
131
|
-
};
|
132
|
-
}
|
133
|
-
|
134
|
-
return {
|
135
|
-
exportedName: this.name,
|
136
|
-
precedence: this.name ? 2 : 3
|
137
|
-
};
|
138
|
-
}
|
139
|
-
|
140
142
|
updateHash(hash) {
|
141
143
|
super.updateHash(hash);
|
142
144
|
const hashValue = this.getHashValue(this.importDependency.module);
|
@@ -166,7 +168,6 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
166
168
|
const name = dep.importedVar;
|
167
169
|
const used = dep.originModule.isUsed(dep.name);
|
168
170
|
const importedModule = dep.importDependency.module;
|
169
|
-
const active = HarmonyModulesHelpers.isActive(dep.originModule, dep);
|
170
171
|
const importsExportsUnknown = !importedModule || !Array.isArray(importedModule.providedExports);
|
171
172
|
|
172
173
|
const getReexportStatement = this.reexportStatementCreator(dep.originModule, importsExportsUnknown, name);
|
@@ -176,11 +177,6 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
176
177
|
return "/* unused harmony reexport " + dep.name + " */\n";
|
177
178
|
}
|
178
179
|
|
179
|
-
// we want to reexport something but another exports overrides this one
|
180
|
-
if(!active) {
|
181
|
-
return "/* inactive harmony reexport " + (dep.name || "namespace") + " */\n";
|
182
|
-
}
|
183
|
-
|
184
180
|
// we want to reexport the default export from a non-hamory module
|
185
181
|
const isNotAHarmonyModule = !(importedModule && (!importedModule.meta || importedModule.meta.harmonyModule));
|
186
182
|
if(dep.name && dep.id === "default" && isNotAHarmonyModule) {
|
@@ -198,13 +194,17 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
198
194
|
return "/* harmony reexport (module object) */ " + getReexportStatement(JSON.stringify(used), "");
|
199
195
|
}
|
200
196
|
|
197
|
+
const hasProvidedExports = importedModule && Array.isArray(importedModule.providedExports);
|
198
|
+
|
199
|
+
const activeFromOtherStarExports = dep._discoverActiveExportsFromOtherStartExports();
|
200
|
+
|
201
201
|
// we know which exports are used
|
202
202
|
if(Array.isArray(dep.originModule.usedExports)) {
|
203
|
-
const
|
204
|
-
const items = dep.originModule.usedExports.map(function(id) {
|
203
|
+
const items = dep.originModule.usedExports.map(id => {
|
205
204
|
if(id === "default") return;
|
206
|
-
if(activeExports.
|
205
|
+
if(dep.activeExports.has(id)) return;
|
207
206
|
if(importedModule.isProvided(id) === false) return;
|
207
|
+
if(activeFromOtherStarExports.has(id)) return;
|
208
208
|
var exportUsed = dep.originModule.isUsed(id);
|
209
209
|
var idUsed = importedModule && importedModule.isUsed(id);
|
210
210
|
return [exportUsed, idUsed];
|
@@ -220,11 +220,11 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
220
220
|
}
|
221
221
|
|
222
222
|
// not sure which exports are used, but we know which are provided
|
223
|
-
if(dep.originModule.usedExports && importedModule &&
|
224
|
-
const
|
225
|
-
const items = importedModule.providedExports.map(function(id) {
|
223
|
+
if(dep.originModule.usedExports && importedModule && hasProvidedExports) {
|
224
|
+
const items = importedModule.providedExports.map(id => {
|
226
225
|
if(id === "default") return;
|
227
|
-
if(activeExports.
|
226
|
+
if(dep.activeExports.has(id)) return;
|
227
|
+
if(activeFromOtherStarExports.has(id)) return;
|
228
228
|
var exportUsed = dep.originModule.isUsed(id);
|
229
229
|
var idUsed = importedModule && importedModule.isUsed(id);
|
230
230
|
return [exportUsed, idUsed];
|
@@ -241,7 +241,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
241
241
|
|
242
242
|
// not sure which exports are used and provided
|
243
243
|
if(dep.originModule.usedExports) {
|
244
|
-
const activeExports =
|
244
|
+
const activeExports = Array.from(dep.activeExports).concat(Array.from(activeFromOtherStarExports));
|
245
245
|
let content = "/* harmony namespace reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in " + name + ") ";
|
246
246
|
|
247
247
|
// Filter out exports which are defined by other exports
|
@@ -4,7 +4,6 @@
|
|
4
4
|
*/
|
5
5
|
"use strict";
|
6
6
|
const NullDependency = require("./NullDependency");
|
7
|
-
const HarmonyModulesHelpers = require("./HarmonyModulesHelpers");
|
8
7
|
|
9
8
|
class HarmonyExportSpecifierDependency extends NullDependency {
|
10
9
|
constructor(originModule, id, name, position, immutable) {
|
@@ -25,13 +24,6 @@ class HarmonyExportSpecifierDependency extends NullDependency {
|
|
25
24
|
exports: [this.name]
|
26
25
|
};
|
27
26
|
}
|
28
|
-
|
29
|
-
describeHarmonyExport() {
|
30
|
-
return {
|
31
|
-
exportedName: this.name,
|
32
|
-
precedence: 1
|
33
|
-
};
|
34
|
-
}
|
35
27
|
}
|
36
28
|
|
37
29
|
HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependencyTemplate {
|
@@ -46,15 +38,10 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
46
38
|
|
47
39
|
getContent(dep) {
|
48
40
|
const used = dep.originModule.isUsed(dep.name);
|
49
|
-
const active = HarmonyModulesHelpers.isActive(dep.originModule, dep);
|
50
41
|
if(!used) {
|
51
42
|
return `/* unused harmony export ${(dep.name || "namespace")} */\n`;
|
52
43
|
}
|
53
44
|
|
54
|
-
if(!active) {
|
55
|
-
return `/* inactive harmony export ${(dep.name || "namespace")} */\n`;
|
56
|
-
}
|
57
|
-
|
58
45
|
const exportsName = dep.originModule.exportsArgument || "exports";
|
59
46
|
if(dep.immutable) {
|
60
47
|
return `/* harmony export (immutable) */ ${exportsName}[${JSON.stringify(used)}] = ${dep.id};\n`;
|
@@ -27,59 +27,6 @@ class HarmonyModulesHelpers {
|
|
27
27
|
return null;
|
28
28
|
return this.getModuleVar(state, request);
|
29
29
|
}
|
30
|
-
|
31
|
-
// checks if an harmony dependency is active in a module according to
|
32
|
-
// precedence rules.
|
33
|
-
static isActive(module, depInQuestion) {
|
34
|
-
const desc = depInQuestion.describeHarmonyExport();
|
35
|
-
if(!desc.exportedName) return true;
|
36
|
-
let before = true;
|
37
|
-
for(let idx = 0; idx < module.dependencies.length; idx++) {
|
38
|
-
const dep = module.dependencies[idx];
|
39
|
-
if(dep === depInQuestion) {
|
40
|
-
before = false;
|
41
|
-
continue;
|
42
|
-
}
|
43
|
-
if(!dep.describeHarmonyExport) continue;
|
44
|
-
const d = dep.describeHarmonyExport();
|
45
|
-
if(!d || !d.exportedName) continue;
|
46
|
-
if(d.exportedName === desc.exportedName) {
|
47
|
-
if(d.precedence < desc.precedence) {
|
48
|
-
return false;
|
49
|
-
}
|
50
|
-
if(d.precedence === desc.precedence && !before) {
|
51
|
-
return false;
|
52
|
-
}
|
53
|
-
}
|
54
|
-
}
|
55
|
-
return true;
|
56
|
-
}
|
57
|
-
|
58
|
-
// get a list of named exports defined in a module
|
59
|
-
// doesn't include * reexports.
|
60
|
-
static getActiveExports(module, currentDependency) {
|
61
|
-
const desc = currentDependency && currentDependency.describeHarmonyExport();
|
62
|
-
var currentIndex = currentDependency ? module.dependencies.indexOf(currentDependency) : -1;
|
63
|
-
return module.dependencies.map((dep, idx) => {
|
64
|
-
return {
|
65
|
-
dep: dep,
|
66
|
-
idx: idx
|
67
|
-
};
|
68
|
-
}).reduce((arr, data) => {
|
69
|
-
const dep = data.dep;
|
70
|
-
if(!dep.describeHarmonyExport) return arr;
|
71
|
-
const d = dep.describeHarmonyExport();
|
72
|
-
if(!d) return arr;
|
73
|
-
if(!desc || (d.precedence < desc.precedence) || (d.precedence === desc.precedence && data.idx < currentIndex)) {
|
74
|
-
var names = [].concat(d.exportedName);
|
75
|
-
names.forEach(function(name) {
|
76
|
-
if(name && arr.indexOf(name) < 0)
|
77
|
-
arr.push(name);
|
78
|
-
});
|
79
|
-
}
|
80
|
-
return arr;
|
81
|
-
}, []);
|
82
|
-
}
|
83
30
|
}
|
84
31
|
|
85
32
|
module.exports = HarmonyModulesHelpers;
|
@@ -4,7 +4,6 @@
|
|
4
4
|
*/
|
5
5
|
"use strict";
|
6
6
|
const ContextDependency = require("./ContextDependency");
|
7
|
-
const CriticalDependencyWarning = require("./CriticalDependencyWarning");
|
8
7
|
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
9
8
|
|
10
9
|
class ImportContextDependency extends ContextDependency {
|
@@ -19,15 +18,6 @@ class ImportContextDependency extends ContextDependency {
|
|
19
18
|
return "import() context";
|
20
19
|
}
|
21
20
|
|
22
|
-
getWarnings() {
|
23
|
-
if(!this.critical) {
|
24
|
-
return;
|
25
|
-
}
|
26
|
-
|
27
|
-
return [
|
28
|
-
new CriticalDependencyWarning(this.critical)
|
29
|
-
];
|
30
|
-
}
|
31
21
|
}
|
32
22
|
|
33
23
|
ImportContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
@@ -1,17 +1,17 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
7
|
-
const ImportDependency = require("./ImportDependency");
|
8
|
-
|
9
|
-
module.exports = class ImportDependenciesBlock extends AsyncDependenciesBlock {
|
10
|
-
constructor(request, range, chunkName, module, loc) {
|
11
|
-
super(chunkName, module, loc);
|
12
|
-
this.range = range;
|
13
|
-
const dep = new ImportDependency(request, this);
|
14
|
-
dep.loc = loc;
|
15
|
-
this.addDependency(dep);
|
16
|
-
}
|
17
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
7
|
+
const ImportDependency = require("./ImportDependency");
|
8
|
+
|
9
|
+
module.exports = class ImportDependenciesBlock extends AsyncDependenciesBlock {
|
10
|
+
constructor(request, range, chunkName, module, loc) {
|
11
|
+
super(chunkName, module, loc);
|
12
|
+
this.range = range;
|
13
|
+
const dep = new ImportDependency(request, this);
|
14
|
+
dep.loc = loc;
|
15
|
+
this.addDependency(dep);
|
16
|
+
}
|
17
|
+
};
|
@@ -1,22 +1,22 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const ImportContextDependency = require("./ImportContextDependency");
|
7
|
-
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
8
|
-
|
9
|
-
class ImportEagerContextDependency extends ImportContextDependency {
|
10
|
-
constructor(request, recursive, regExp, range, valueRange, chunkName) {
|
11
|
-
super(request, recursive, regExp, range, valueRange, chunkName);
|
12
|
-
this.async = "eager";
|
13
|
-
}
|
14
|
-
|
15
|
-
get type() {
|
16
|
-
return "import() context eager";
|
17
|
-
}
|
18
|
-
}
|
19
|
-
|
20
|
-
ImportEagerContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
21
|
-
|
22
|
-
module.exports = ImportEagerContextDependency;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const ImportContextDependency = require("./ImportContextDependency");
|
7
|
+
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
8
|
+
|
9
|
+
class ImportEagerContextDependency extends ImportContextDependency {
|
10
|
+
constructor(request, recursive, regExp, range, valueRange, chunkName) {
|
11
|
+
super(request, recursive, regExp, range, valueRange, chunkName);
|
12
|
+
this.async = "eager";
|
13
|
+
}
|
14
|
+
|
15
|
+
get type() {
|
16
|
+
return "import() context eager";
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
ImportEagerContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
21
|
+
|
22
|
+
module.exports = ImportEagerContextDependency;
|
@@ -1,22 +1,22 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
const ImportContextDependency = require("./ImportContextDependency");
|
7
|
-
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
8
|
-
|
9
|
-
class ImportLazyContextDependency extends ImportContextDependency {
|
10
|
-
constructor(request, recursive, regExp, range, valueRange, chunkName) {
|
11
|
-
super(request, recursive, regExp, range, valueRange, chunkName);
|
12
|
-
this.async = "lazy";
|
13
|
-
}
|
14
|
-
|
15
|
-
get type() {
|
16
|
-
return "import() context lazy";
|
17
|
-
}
|
18
|
-
}
|
19
|
-
|
20
|
-
ImportLazyContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
21
|
-
|
22
|
-
module.exports = ImportLazyContextDependency;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
const ImportContextDependency = require("./ImportContextDependency");
|
7
|
+
const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
|
8
|
+
|
9
|
+
class ImportLazyContextDependency extends ImportContextDependency {
|
10
|
+
constructor(request, recursive, regExp, range, valueRange, chunkName) {
|
11
|
+
super(request, recursive, regExp, range, valueRange, chunkName);
|
12
|
+
this.async = "lazy";
|
13
|
+
}
|
14
|
+
|
15
|
+
get type() {
|
16
|
+
return "import() context lazy";
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
ImportLazyContextDependency.Template = ContextDependencyTemplateAsRequireCall;
|
21
|
+
|
22
|
+
module.exports = ImportLazyContextDependency;
|