webpack 4.15.0 → 4.16.2
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 +761 -758
- package/SECURITY.md +9 -9
- package/buildin/amd-define.js +3 -3
- package/buildin/amd-options.js +2 -2
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/buildin/system.js +7 -7
- package/hot/dev-server.js +61 -61
- package/hot/emitter.js +2 -2
- package/hot/log-apply-result.js +44 -44
- package/hot/log.js +45 -45
- package/hot/only-dev-server.js +105 -105
- package/hot/poll.js +40 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -87
- package/lib/AsyncDependencyToInitialChunkError.js +31 -31
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +117 -117
- package/lib/BasicEvaluatedExpression.js +211 -211
- package/lib/CachePlugin.js +102 -102
- package/lib/CaseSensitiveModulesWarning.js +67 -67
- package/lib/Chunk.js +833 -811
- package/lib/ChunkGroup.js +4 -4
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CommentCompilationWarning.js +2 -2
- package/lib/CompatibilityPlugin.js +70 -70
- package/lib/Compilation.js +46 -15
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -258
- package/lib/ContextExclusionPlugin.js +28 -17
- package/lib/ContextModule.js +844 -739
- package/lib/ContextModuleFactory.js +262 -256
- package/lib/ContextReplacementPlugin.js +133 -133
- package/lib/DefinePlugin.js +49 -0
- package/lib/DelegatedModule.js +5 -0
- package/lib/DelegatedModuleFactoryPlugin.js +95 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +1 -1
- package/lib/Dependency.js +10 -4
- package/lib/DllModule.js +60 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -44
- package/lib/DllReferencePlugin.js +132 -84
- package/lib/EntryModuleNotFoundError.js +21 -21
- package/lib/Entrypoint.js +54 -54
- package/lib/EnvironmentPlugin.js +72 -65
- package/lib/ErrorHelpers.js +60 -60
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalSourceMapDevToolModuleTemplatePlugin.js +115 -115
- package/lib/EvalSourceMapDevToolPlugin.js +41 -41
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -53
- package/lib/ExternalModule.js +165 -159
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModuleTemplatePlugin.js +100 -100
- package/lib/Generator.js +60 -52
- package/lib/HarmonyLinkingError.js +17 -17
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacementPlugin.js +411 -413
- package/lib/IgnorePlugin.js +90 -90
- package/lib/JavascriptGenerator.js +229 -229
- package/lib/JavascriptModulesPlugin.js +179 -179
- package/lib/JsonGenerator.js +55 -55
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -27
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -153
- package/lib/LoaderOptionsPlugin.js +53 -53
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MemoryOutputFileSystem.js +5 -5
- package/lib/Module.js +431 -391
- package/lib/ModuleBuildError.js +52 -52
- package/lib/ModuleDependencyError.js +35 -35
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +36 -36
- package/lib/ModuleFilenameHelpers.js +178 -178
- package/lib/ModuleNotFoundError.js +23 -23
- package/lib/ModuleParseError.js +57 -57
- package/lib/ModuleTemplate.js +93 -93
- package/lib/ModuleWarning.js +36 -36
- package/lib/MultiCompiler.js +283 -283
- package/lib/MultiModule.js +87 -81
- package/lib/MultiModuleFactory.js +23 -23
- package/lib/MultiStats.js +92 -92
- package/lib/MultiWatching.js +38 -38
- package/lib/NamedChunksPlugin.js +29 -29
- package/lib/NamedModulesPlugin.js +57 -57
- package/lib/NoEmitOnErrorsPlugin.js +20 -20
- package/lib/NoModeWarning.js +23 -23
- package/lib/NodeStuffPlugin.js +197 -179
- package/lib/NormalModule.js +542 -536
- package/lib/NormalModuleFactory.js +526 -526
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/NullFactory.js +12 -12
- package/lib/OptionsApply.js +10 -10
- package/lib/OptionsDefaulter.js +84 -84
- package/lib/Parser.js +2202 -2193
- package/lib/ParserHelpers.js +103 -103
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +246 -246
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -56
- package/lib/RecordIdsPlugin.js +230 -230
- package/lib/RemovedPluginError.js +11 -11
- package/lib/RequestShortener.js +83 -83
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuntimeTemplate.js +12 -0
- package/lib/SetVarMainTemplatePlugin.js +69 -69
- package/lib/SingleEntryPlugin.js +6 -1
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -301
- package/lib/Stats.js +28 -5
- package/lib/TemplatedPathPlugin.js +173 -173
- package/lib/UnsupportedFeatureWarning.js +22 -22
- package/lib/UseStrictPlugin.js +54 -54
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -37
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -194
- package/lib/WebpackOptionsApply.js +92 -10
- package/lib/WebpackOptionsDefaulter.js +368 -354
- package/lib/debug/ProfilingPlugin.js +430 -430
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/AMDRequireItemDependency.js +22 -22
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependency.js +22 -22
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +6 -0
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyHelpers.js +142 -142
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/CriticalDependencyWarning.js +20 -20
- package/lib/dependencies/DelegatedSourceDependency.js +18 -18
- package/lib/dependencies/DllEntryDependency.js +20 -20
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -92
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +2 -1
- package/lib/dependencies/HarmonyImportDependency.js +109 -109
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +222 -222
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +167 -167
- package/lib/dependencies/HarmonyInitDependency.js +60 -60
- package/lib/dependencies/HarmonyModulesPlugin.js +146 -146
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +26 -26
- package/lib/dependencies/ImportContextDependency.js +23 -23
- package/lib/dependencies/ImportDependenciesBlock.js +18 -18
- package/lib/dependencies/ImportDependency.js +34 -34
- package/lib/dependencies/ImportEagerDependency.js +32 -32
- package/lib/dependencies/ImportParserPlugin.js +263 -263
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/LoaderPlugin.js +18 -1
- package/lib/dependencies/LocalModule.js +23 -23
- package/lib/dependencies/LocalModulesHelpers.js +52 -52
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/ModuleHotAcceptDependency.js +23 -23
- package/lib/dependencies/ModuleHotDeclineDependency.js +23 -23
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/PrefetchDependency.js +18 -18
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -143
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -116
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsureItemDependency.js +21 -21
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependency.js +22 -22
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +29 -29
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -48
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/formatLocation.js +75 -61
- package/lib/node/NodeChunkTemplatePlugin.js +31 -31
- package/lib/node/NodeEnvironmentPlugin.js +28 -28
- package/lib/node/NodeHotUpdateChunkTemplatePlugin.js +36 -36
- package/lib/node/NodeMainTemplate.runtime.js +27 -27
- package/lib/node/NodeMainTemplatePlugin.js +323 -323
- package/lib/node/NodeOutputFileSystem.js +22 -22
- package/lib/node/NodeSourcePlugin.js +144 -144
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -99
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +61 -61
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -287
- package/lib/optimize/ConcatenatedModule.js +5 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +70 -70
- package/lib/optimize/FlagIncludedChunksPlugin.js +99 -99
- package/lib/optimize/LimitChunkCountPlugin.js +66 -66
- package/lib/optimize/MergeDuplicateChunksPlugin.js +78 -78
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/NaturalChunkOrderPlugin.js +41 -0
- package/lib/optimize/OccurrenceChunkOrderPlugin.js +61 -0
- package/lib/optimize/OccurrenceModuleOrderPlugin.js +103 -0
- package/lib/optimize/OccurrenceOrderPlugin.js +135 -133
- package/lib/optimize/RemoveEmptyChunksPlugin.js +42 -42
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -127
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +168 -168
- package/lib/optimize/SplitChunksPlugin.js +866 -850
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +30 -30
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/SortableSet.js +1 -0
- package/lib/util/StackedSetMap.js +144 -135
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/deterministicGrouping.js +251 -251
- package/lib/util/identifier.js +103 -103
- package/lib/util/objectToMap.js +16 -16
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +17 -17
- package/lib/wasm/WasmFinalizeExportsPlugin.js +1 -1
- package/lib/wasm/WebAssemblyGenerator.js +16 -2
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +147 -133
- package/lib/wasm/WebAssemblyParser.js +174 -174
- package/lib/wasm/WebAssemblyUtils.js +59 -59
- package/lib/web/FetchCompileWasmTemplatePlugin.js +37 -37
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -65
- package/lib/web/JsonpMainTemplatePlugin.js +1 -1
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/web/WebEnvironmentPlugin.js +18 -18
- package/lib/webpack.js +5 -0
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -65
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +196 -196
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +22 -13
- package/schemas/WebpackOptions.json +2062 -2036
- package/schemas/ajv.absolutePath.js +55 -55
- package/schemas/plugins/BannerPlugin.json +96 -96
- package/schemas/plugins/DllPlugin.json +32 -32
- package/schemas/plugins/DllReferencePlugin.json +99 -99
- package/schemas/plugins/HashedModuleIdsPlugin.json +24 -24
- package/schemas/plugins/LoaderOptionsPlugin.json +26 -26
- package/schemas/plugins/SourceMapDevToolPlugin.json +187 -187
- package/schemas/plugins/WatchIgnorePlugin.json +16 -16
- package/schemas/plugins/debug/ProfilingPlugin.json +12 -12
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.json +22 -22
- package/schemas/plugins/optimize/LimitChunkCountPlugin.json +15 -15
- package/schemas/plugins/optimize/MinChunkSizePlugin.json +13 -13
- package/schemas/plugins/optimize/OccurrenceOrderChunkIdsPlugin.json +10 -0
- package/schemas/plugins/optimize/OccurrenceOrderModuleIdsPlugin.json +10 -0
@@ -1,139 +1,139 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
|
8
|
-
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
9
|
-
const HarmonyExportHeaderDependency = require("./HarmonyExportHeaderDependency");
|
10
|
-
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency");
|
11
|
-
const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImportedSpecifierDependency");
|
12
|
-
const ConstDependency = require("./ConstDependency");
|
13
|
-
|
14
|
-
module.exports = class HarmonyExportDependencyParserPlugin {
|
15
|
-
constructor(moduleOptions) {
|
16
|
-
this.strictExportPresence = moduleOptions.strictExportPresence;
|
17
|
-
}
|
18
|
-
|
19
|
-
apply(parser) {
|
20
|
-
parser.hooks.export.tap(
|
21
|
-
"HarmonyExportDependencyParserPlugin",
|
22
|
-
statement => {
|
23
|
-
const dep = new HarmonyExportHeaderDependency(
|
24
|
-
statement.declaration && statement.declaration.range,
|
25
|
-
statement.range
|
26
|
-
);
|
27
|
-
dep.loc = Object.create(statement.loc);
|
28
|
-
dep.loc.index = -1;
|
29
|
-
parser.state.current.addDependency(dep);
|
30
|
-
return true;
|
31
|
-
}
|
32
|
-
);
|
33
|
-
parser.hooks.exportImport.tap(
|
34
|
-
"HarmonyExportDependencyParserPlugin",
|
35
|
-
(statement, source) => {
|
36
|
-
parser.state.lastHarmonyImportOrder =
|
37
|
-
(parser.state.lastHarmonyImportOrder || 0) + 1;
|
38
|
-
const clearDep = new ConstDependency("", statement.range);
|
39
|
-
clearDep.loc = Object.create(statement.loc);
|
40
|
-
clearDep.loc.index = -1;
|
41
|
-
parser.state.current.addDependency(clearDep);
|
42
|
-
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
43
|
-
source,
|
44
|
-
parser.state.module,
|
45
|
-
parser.state.lastHarmonyImportOrder,
|
46
|
-
parser.state.harmonyParserScope
|
47
|
-
);
|
48
|
-
sideEffectDep.loc = Object.create(statement.loc);
|
49
|
-
sideEffectDep.loc.index = -1;
|
50
|
-
parser.state.current.addDependency(sideEffectDep);
|
51
|
-
return true;
|
52
|
-
}
|
53
|
-
);
|
54
|
-
parser.hooks.exportExpression.tap(
|
55
|
-
"HarmonyExportDependencyParserPlugin",
|
56
|
-
(statement, expr) => {
|
57
|
-
const dep = new HarmonyExportExpressionDependency(
|
58
|
-
parser.state.module,
|
59
|
-
expr.range,
|
60
|
-
statement.range
|
61
|
-
);
|
62
|
-
dep.loc = Object.create(statement.loc);
|
63
|
-
dep.loc.index = -1;
|
64
|
-
parser.state.current.addDependency(dep);
|
65
|
-
return true;
|
66
|
-
}
|
67
|
-
);
|
68
|
-
parser.hooks.exportDeclaration.tap(
|
69
|
-
"HarmonyExportDependencyParserPlugin",
|
70
|
-
statement => {}
|
71
|
-
);
|
72
|
-
parser.hooks.exportSpecifier.tap(
|
73
|
-
"HarmonyExportDependencyParserPlugin",
|
74
|
-
(statement, id, name, idx) => {
|
75
|
-
const rename = parser.scope.renames.get(id);
|
76
|
-
let dep;
|
77
|
-
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
78
|
-
parser.state.harmonyNamedExports || new Set());
|
79
|
-
harmonyNamedExports.add(name);
|
80
|
-
if (rename === "imported var") {
|
81
|
-
const settings = parser.state.harmonySpecifier.get(id);
|
82
|
-
dep = new HarmonyExportImportedSpecifierDependency(
|
83
|
-
settings.source,
|
84
|
-
parser.state.module,
|
85
|
-
settings.sourceOrder,
|
86
|
-
parser.state.harmonyParserScope,
|
87
|
-
settings.id,
|
88
|
-
name,
|
89
|
-
harmonyNamedExports,
|
90
|
-
null,
|
91
|
-
this.strictExportPresence
|
92
|
-
);
|
93
|
-
} else {
|
94
|
-
dep = new HarmonyExportSpecifierDependency(
|
95
|
-
parser.state.module,
|
96
|
-
id,
|
97
|
-
name
|
98
|
-
);
|
99
|
-
}
|
100
|
-
dep.loc = Object.create(statement.loc);
|
101
|
-
dep.loc.index = idx;
|
102
|
-
parser.state.current.addDependency(dep);
|
103
|
-
return true;
|
104
|
-
}
|
105
|
-
);
|
106
|
-
parser.hooks.exportImportSpecifier.tap(
|
107
|
-
"HarmonyExportDependencyParserPlugin",
|
108
|
-
(statement, source, id, name, idx) => {
|
109
|
-
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
110
|
-
parser.state.harmonyNamedExports || new Set());
|
111
|
-
let harmonyStarExports = null;
|
112
|
-
if (name) {
|
113
|
-
harmonyNamedExports.add(name);
|
114
|
-
} else {
|
115
|
-
harmonyStarExports = parser.state.harmonyStarExports =
|
116
|
-
parser.state.harmonyStarExports || [];
|
117
|
-
}
|
118
|
-
const dep = new HarmonyExportImportedSpecifierDependency(
|
119
|
-
source,
|
120
|
-
parser.state.module,
|
121
|
-
parser.state.lastHarmonyImportOrder,
|
122
|
-
parser.state.harmonyParserScope,
|
123
|
-
id,
|
124
|
-
name,
|
125
|
-
harmonyNamedExports,
|
126
|
-
harmonyStarExports && harmonyStarExports.slice(),
|
127
|
-
this.strictExportPresence
|
128
|
-
);
|
129
|
-
if (harmonyStarExports) {
|
130
|
-
harmonyStarExports.push(dep);
|
131
|
-
}
|
132
|
-
dep.loc = Object.create(statement.loc);
|
133
|
-
dep.loc.index = idx;
|
134
|
-
parser.state.current.addDependency(dep);
|
135
|
-
return true;
|
136
|
-
}
|
137
|
-
);
|
138
|
-
}
|
139
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
|
8
|
+
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
9
|
+
const HarmonyExportHeaderDependency = require("./HarmonyExportHeaderDependency");
|
10
|
+
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency");
|
11
|
+
const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImportedSpecifierDependency");
|
12
|
+
const ConstDependency = require("./ConstDependency");
|
13
|
+
|
14
|
+
module.exports = class HarmonyExportDependencyParserPlugin {
|
15
|
+
constructor(moduleOptions) {
|
16
|
+
this.strictExportPresence = moduleOptions.strictExportPresence;
|
17
|
+
}
|
18
|
+
|
19
|
+
apply(parser) {
|
20
|
+
parser.hooks.export.tap(
|
21
|
+
"HarmonyExportDependencyParserPlugin",
|
22
|
+
statement => {
|
23
|
+
const dep = new HarmonyExportHeaderDependency(
|
24
|
+
statement.declaration && statement.declaration.range,
|
25
|
+
statement.range
|
26
|
+
);
|
27
|
+
dep.loc = Object.create(statement.loc);
|
28
|
+
dep.loc.index = -1;
|
29
|
+
parser.state.current.addDependency(dep);
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
);
|
33
|
+
parser.hooks.exportImport.tap(
|
34
|
+
"HarmonyExportDependencyParserPlugin",
|
35
|
+
(statement, source) => {
|
36
|
+
parser.state.lastHarmonyImportOrder =
|
37
|
+
(parser.state.lastHarmonyImportOrder || 0) + 1;
|
38
|
+
const clearDep = new ConstDependency("", statement.range);
|
39
|
+
clearDep.loc = Object.create(statement.loc);
|
40
|
+
clearDep.loc.index = -1;
|
41
|
+
parser.state.current.addDependency(clearDep);
|
42
|
+
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
43
|
+
source,
|
44
|
+
parser.state.module,
|
45
|
+
parser.state.lastHarmonyImportOrder,
|
46
|
+
parser.state.harmonyParserScope
|
47
|
+
);
|
48
|
+
sideEffectDep.loc = Object.create(statement.loc);
|
49
|
+
sideEffectDep.loc.index = -1;
|
50
|
+
parser.state.current.addDependency(sideEffectDep);
|
51
|
+
return true;
|
52
|
+
}
|
53
|
+
);
|
54
|
+
parser.hooks.exportExpression.tap(
|
55
|
+
"HarmonyExportDependencyParserPlugin",
|
56
|
+
(statement, expr) => {
|
57
|
+
const dep = new HarmonyExportExpressionDependency(
|
58
|
+
parser.state.module,
|
59
|
+
expr.range,
|
60
|
+
statement.range
|
61
|
+
);
|
62
|
+
dep.loc = Object.create(statement.loc);
|
63
|
+
dep.loc.index = -1;
|
64
|
+
parser.state.current.addDependency(dep);
|
65
|
+
return true;
|
66
|
+
}
|
67
|
+
);
|
68
|
+
parser.hooks.exportDeclaration.tap(
|
69
|
+
"HarmonyExportDependencyParserPlugin",
|
70
|
+
statement => {}
|
71
|
+
);
|
72
|
+
parser.hooks.exportSpecifier.tap(
|
73
|
+
"HarmonyExportDependencyParserPlugin",
|
74
|
+
(statement, id, name, idx) => {
|
75
|
+
const rename = parser.scope.renames.get(id);
|
76
|
+
let dep;
|
77
|
+
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
78
|
+
parser.state.harmonyNamedExports || new Set());
|
79
|
+
harmonyNamedExports.add(name);
|
80
|
+
if (rename === "imported var") {
|
81
|
+
const settings = parser.state.harmonySpecifier.get(id);
|
82
|
+
dep = new HarmonyExportImportedSpecifierDependency(
|
83
|
+
settings.source,
|
84
|
+
parser.state.module,
|
85
|
+
settings.sourceOrder,
|
86
|
+
parser.state.harmonyParserScope,
|
87
|
+
settings.id,
|
88
|
+
name,
|
89
|
+
harmonyNamedExports,
|
90
|
+
null,
|
91
|
+
this.strictExportPresence
|
92
|
+
);
|
93
|
+
} else {
|
94
|
+
dep = new HarmonyExportSpecifierDependency(
|
95
|
+
parser.state.module,
|
96
|
+
id,
|
97
|
+
name
|
98
|
+
);
|
99
|
+
}
|
100
|
+
dep.loc = Object.create(statement.loc);
|
101
|
+
dep.loc.index = idx;
|
102
|
+
parser.state.current.addDependency(dep);
|
103
|
+
return true;
|
104
|
+
}
|
105
|
+
);
|
106
|
+
parser.hooks.exportImportSpecifier.tap(
|
107
|
+
"HarmonyExportDependencyParserPlugin",
|
108
|
+
(statement, source, id, name, idx) => {
|
109
|
+
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
110
|
+
parser.state.harmonyNamedExports || new Set());
|
111
|
+
let harmonyStarExports = null;
|
112
|
+
if (name) {
|
113
|
+
harmonyNamedExports.add(name);
|
114
|
+
} else {
|
115
|
+
harmonyStarExports = parser.state.harmonyStarExports =
|
116
|
+
parser.state.harmonyStarExports || [];
|
117
|
+
}
|
118
|
+
const dep = new HarmonyExportImportedSpecifierDependency(
|
119
|
+
source,
|
120
|
+
parser.state.module,
|
121
|
+
parser.state.lastHarmonyImportOrder,
|
122
|
+
parser.state.harmonyParserScope,
|
123
|
+
id,
|
124
|
+
name,
|
125
|
+
harmonyNamedExports,
|
126
|
+
harmonyStarExports && harmonyStarExports.slice(),
|
127
|
+
this.strictExportPresence
|
128
|
+
);
|
129
|
+
if (harmonyStarExports) {
|
130
|
+
harmonyStarExports.push(dep);
|
131
|
+
}
|
132
|
+
dep.loc = Object.create(statement.loc);
|
133
|
+
dep.loc.index = idx;
|
134
|
+
parser.state.current.addDependency(dep);
|
135
|
+
return true;
|
136
|
+
}
|
137
|
+
);
|
138
|
+
}
|
139
|
+
};
|
@@ -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 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
|
24
|
-
? dep.range[0] - 1
|
25
|
-
: dep.rangeStatement[1] - 1;
|
26
|
-
source.replace(dep.rangeStatement[0], replaceUntil, content);
|
27
|
-
}
|
28
|
-
};
|
29
|
-
|
30
|
-
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
|
24
|
+
? dep.range[0] - 1
|
25
|
+
: dep.rangeStatement[1] - 1;
|
26
|
+
source.replace(dep.rangeStatement[0], replaceUntil, content);
|
27
|
+
}
|
28
|
+
};
|
29
|
+
|
30
|
+
module.exports = HarmonyExportHeaderDependency;
|
@@ -244,7 +244,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
244
244
|
return new DependencyReference(
|
245
245
|
mode.module,
|
246
246
|
Array.from(mode.map.values()),
|
247
|
-
false
|
247
|
+
false,
|
248
|
+
this.sourceOrder
|
248
249
|
);
|
249
250
|
|
250
251
|
case "dynamic-reexport":
|
@@ -1,109 +1,109 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const DependencyReference = require("./DependencyReference");
|
8
|
-
const ModuleDependency = require("./ModuleDependency");
|
9
|
-
const Template = require("../Template");
|
10
|
-
|
11
|
-
class HarmonyImportDependency extends ModuleDependency {
|
12
|
-
constructor(request, originModule, sourceOrder, parserScope) {
|
13
|
-
super(request);
|
14
|
-
this.redirectedModule = undefined;
|
15
|
-
this.originModule = originModule;
|
16
|
-
this.sourceOrder = sourceOrder;
|
17
|
-
this.parserScope = parserScope;
|
18
|
-
}
|
19
|
-
|
20
|
-
get _module() {
|
21
|
-
return this.redirectedModule || this.module;
|
22
|
-
}
|
23
|
-
|
24
|
-
getReference() {
|
25
|
-
if (!this._module) return null;
|
26
|
-
return new DependencyReference(
|
27
|
-
this._module,
|
28
|
-
false,
|
29
|
-
this.weak,
|
30
|
-
this.sourceOrder
|
31
|
-
);
|
32
|
-
}
|
33
|
-
|
34
|
-
getImportVar() {
|
35
|
-
let importVarMap = this.parserScope.importVarMap;
|
36
|
-
if (!importVarMap) this.parserScope.importVarMap = importVarMap = new Map();
|
37
|
-
let importVar = importVarMap.get(this._module);
|
38
|
-
if (importVar) return importVar;
|
39
|
-
importVar = `${Template.toIdentifier(
|
40
|
-
`${this.userRequest}`
|
41
|
-
)}__WEBPACK_IMPORTED_MODULE_${importVarMap.size}__`;
|
42
|
-
importVarMap.set(this._module, importVar);
|
43
|
-
return importVar;
|
44
|
-
}
|
45
|
-
|
46
|
-
getImportStatement(update, runtime) {
|
47
|
-
return runtime.importStatement({
|
48
|
-
update,
|
49
|
-
module: this._module,
|
50
|
-
importVar: this.getImportVar(),
|
51
|
-
request: this.request,
|
52
|
-
originModule: this.originModule
|
53
|
-
});
|
54
|
-
}
|
55
|
-
|
56
|
-
updateHash(hash) {
|
57
|
-
super.updateHash(hash);
|
58
|
-
const importedModule = this._module;
|
59
|
-
hash.update(
|
60
|
-
(importedModule &&
|
61
|
-
(!importedModule.buildMeta || importedModule.buildMeta.exportsType)) +
|
62
|
-
""
|
63
|
-
);
|
64
|
-
hash.update((importedModule && importedModule.id) + "");
|
65
|
-
}
|
66
|
-
|
67
|
-
disconnect() {
|
68
|
-
super.disconnect();
|
69
|
-
this.redirectedModule = undefined;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
|
73
|
-
module.exports = HarmonyImportDependency;
|
74
|
-
|
75
|
-
const importEmittedMap = new WeakMap();
|
76
|
-
|
77
|
-
HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate {
|
78
|
-
apply(dep, source, runtime) {
|
79
|
-
// no-op
|
80
|
-
}
|
81
|
-
|
82
|
-
getHarmonyInitOrder(dep) {
|
83
|
-
return dep.sourceOrder;
|
84
|
-
}
|
85
|
-
|
86
|
-
static isImportEmitted(dep, source) {
|
87
|
-
let sourceInfo = importEmittedMap.get(source);
|
88
|
-
if (!sourceInfo) return false;
|
89
|
-
const key = dep._module || dep.request;
|
90
|
-
return key && sourceInfo.emittedImports.get(key);
|
91
|
-
}
|
92
|
-
|
93
|
-
harmonyInit(dep, source, runtime, dependencyTemplates) {
|
94
|
-
let sourceInfo = importEmittedMap.get(source);
|
95
|
-
if (!sourceInfo) {
|
96
|
-
importEmittedMap.set(
|
97
|
-
source,
|
98
|
-
(sourceInfo = {
|
99
|
-
emittedImports: new Map()
|
100
|
-
})
|
101
|
-
);
|
102
|
-
}
|
103
|
-
const key = dep._module || dep.request;
|
104
|
-
if (key && sourceInfo.emittedImports.get(key)) return;
|
105
|
-
sourceInfo.emittedImports.set(key, true);
|
106
|
-
const content = dep.getImportStatement(false, runtime);
|
107
|
-
source.insert(-1, content);
|
108
|
-
}
|
109
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const DependencyReference = require("./DependencyReference");
|
8
|
+
const ModuleDependency = require("./ModuleDependency");
|
9
|
+
const Template = require("../Template");
|
10
|
+
|
11
|
+
class HarmonyImportDependency extends ModuleDependency {
|
12
|
+
constructor(request, originModule, sourceOrder, parserScope) {
|
13
|
+
super(request);
|
14
|
+
this.redirectedModule = undefined;
|
15
|
+
this.originModule = originModule;
|
16
|
+
this.sourceOrder = sourceOrder;
|
17
|
+
this.parserScope = parserScope;
|
18
|
+
}
|
19
|
+
|
20
|
+
get _module() {
|
21
|
+
return this.redirectedModule || this.module;
|
22
|
+
}
|
23
|
+
|
24
|
+
getReference() {
|
25
|
+
if (!this._module) return null;
|
26
|
+
return new DependencyReference(
|
27
|
+
this._module,
|
28
|
+
false,
|
29
|
+
this.weak,
|
30
|
+
this.sourceOrder
|
31
|
+
);
|
32
|
+
}
|
33
|
+
|
34
|
+
getImportVar() {
|
35
|
+
let importVarMap = this.parserScope.importVarMap;
|
36
|
+
if (!importVarMap) this.parserScope.importVarMap = importVarMap = new Map();
|
37
|
+
let importVar = importVarMap.get(this._module);
|
38
|
+
if (importVar) return importVar;
|
39
|
+
importVar = `${Template.toIdentifier(
|
40
|
+
`${this.userRequest}`
|
41
|
+
)}__WEBPACK_IMPORTED_MODULE_${importVarMap.size}__`;
|
42
|
+
importVarMap.set(this._module, importVar);
|
43
|
+
return importVar;
|
44
|
+
}
|
45
|
+
|
46
|
+
getImportStatement(update, runtime) {
|
47
|
+
return runtime.importStatement({
|
48
|
+
update,
|
49
|
+
module: this._module,
|
50
|
+
importVar: this.getImportVar(),
|
51
|
+
request: this.request,
|
52
|
+
originModule: this.originModule
|
53
|
+
});
|
54
|
+
}
|
55
|
+
|
56
|
+
updateHash(hash) {
|
57
|
+
super.updateHash(hash);
|
58
|
+
const importedModule = this._module;
|
59
|
+
hash.update(
|
60
|
+
(importedModule &&
|
61
|
+
(!importedModule.buildMeta || importedModule.buildMeta.exportsType)) +
|
62
|
+
""
|
63
|
+
);
|
64
|
+
hash.update((importedModule && importedModule.id) + "");
|
65
|
+
}
|
66
|
+
|
67
|
+
disconnect() {
|
68
|
+
super.disconnect();
|
69
|
+
this.redirectedModule = undefined;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
module.exports = HarmonyImportDependency;
|
74
|
+
|
75
|
+
const importEmittedMap = new WeakMap();
|
76
|
+
|
77
|
+
HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate {
|
78
|
+
apply(dep, source, runtime) {
|
79
|
+
// no-op
|
80
|
+
}
|
81
|
+
|
82
|
+
getHarmonyInitOrder(dep) {
|
83
|
+
return dep.sourceOrder;
|
84
|
+
}
|
85
|
+
|
86
|
+
static isImportEmitted(dep, source) {
|
87
|
+
let sourceInfo = importEmittedMap.get(source);
|
88
|
+
if (!sourceInfo) return false;
|
89
|
+
const key = dep._module || dep.request;
|
90
|
+
return key && sourceInfo.emittedImports.get(key);
|
91
|
+
}
|
92
|
+
|
93
|
+
harmonyInit(dep, source, runtime, dependencyTemplates) {
|
94
|
+
let sourceInfo = importEmittedMap.get(source);
|
95
|
+
if (!sourceInfo) {
|
96
|
+
importEmittedMap.set(
|
97
|
+
source,
|
98
|
+
(sourceInfo = {
|
99
|
+
emittedImports: new Map()
|
100
|
+
})
|
101
|
+
);
|
102
|
+
}
|
103
|
+
const key = dep._module || dep.request;
|
104
|
+
if (key && sourceInfo.emittedImports.get(key)) return;
|
105
|
+
sourceInfo.emittedImports.set(key, true);
|
106
|
+
const content = dep.getImportStatement(false, runtime);
|
107
|
+
source.insert(-1, content);
|
108
|
+
}
|
109
|
+
};
|