webpack 4.9.1 → 4.10.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/README.md +755 -755
- package/SECURITY.md +9 -9
- package/buildin/global.js +20 -20
- package/buildin/harmony-module.js +24 -24
- package/buildin/module.js +22 -22
- package/hot/dev-server.js +61 -61
- 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 +37 -37
- package/hot/signal.js +62 -62
- package/lib/APIPlugin.js +84 -84
- package/lib/AmdMainTemplatePlugin.js +87 -75
- package/lib/AsyncDependenciesBlock.js +66 -66
- package/lib/AsyncDependencyToInitialChunkError.js +31 -21
- package/lib/AutomaticPrefetchPlugin.js +50 -50
- package/lib/BannerPlugin.js +3 -1
- package/lib/BasicEvaluatedExpression.js +211 -208
- package/lib/CachePlugin.js +102 -95
- package/lib/CaseSensitiveModulesWarning.js +71 -53
- package/lib/Chunk.js +750 -722
- package/lib/ChunkGroup.js +13 -5
- package/lib/ChunkRenderError.js +32 -32
- package/lib/CompatibilityPlugin.js +63 -63
- package/lib/Compilation.js +1947 -1905
- package/lib/Compiler.js +508 -496
- package/lib/ConcurrentCompilationError.js +19 -19
- package/lib/ConstPlugin.js +258 -242
- package/lib/ContextExclusionPlugin.js +17 -17
- package/lib/ContextModule.js +749 -710
- package/lib/ContextModuleFactory.js +256 -245
- package/lib/ContextReplacementPlugin.js +133 -126
- package/lib/DefinePlugin.js +206 -197
- package/lib/DelegatedModule.js +101 -101
- package/lib/DelegatedModuleFactoryPlugin.js +89 -89
- package/lib/DelegatedPlugin.js +39 -39
- package/lib/DependenciesBlock.js +89 -87
- package/lib/DependenciesBlockVariable.js +52 -51
- package/lib/Dependency.js +51 -51
- package/lib/DllEntryPlugin.js +51 -51
- package/lib/DllModule.js +54 -54
- package/lib/DllModuleFactory.js +29 -29
- package/lib/DllPlugin.js +44 -42
- package/lib/DllReferencePlugin.js +84 -84
- package/lib/DynamicEntryPlugin.js +73 -71
- package/lib/EntryOptionPlugin.js +33 -33
- package/lib/EnvironmentPlugin.js +65 -65
- package/lib/ErrorHelpers.js +60 -57
- package/lib/EvalDevToolModulePlugin.js +27 -27
- package/lib/EvalDevToolModuleTemplatePlugin.js +61 -61
- package/lib/EvalSourceMapDevToolPlugin.js +41 -40
- package/lib/ExportPropertyMainTemplatePlugin.js +53 -40
- package/lib/ExtendedAPIPlugin.js +84 -84
- package/lib/ExternalModule.js +159 -159
- package/lib/ExternalModuleFactoryPlugin.js +110 -110
- package/lib/ExternalsPlugin.js +23 -23
- package/lib/FlagDependencyExportsPlugin.js +146 -146
- package/lib/FlagDependencyUsagePlugin.js +110 -104
- package/lib/FlagInitialModulesAsUsedPlugin.js +36 -36
- package/lib/FunctionModulePlugin.js +19 -19
- package/lib/FunctionModuleTemplatePlugin.js +100 -98
- package/lib/GraphHelpers.js +64 -64
- package/lib/HarmonyLinkingError.js +18 -18
- package/lib/HashedModuleIdsPlugin.js +53 -53
- package/lib/HotModuleReplacement.runtime.js +7 -3
- package/lib/HotModuleReplacementPlugin.js +413 -406
- package/lib/HotUpdateChunk.js +16 -16
- package/lib/HotUpdateChunkTemplate.js +78 -78
- package/lib/IgnorePlugin.js +71 -71
- package/lib/JavascriptGenerator.js +229 -228
- package/lib/JavascriptModulesPlugin.js +179 -184
- package/lib/JsonGenerator.js +42 -42
- package/lib/JsonModulesPlugin.js +30 -30
- package/lib/JsonParser.js +27 -26
- package/lib/LibManifestPlugin.js +86 -86
- package/lib/LibraryTemplatePlugin.js +153 -119
- package/lib/LoaderOptionsPlugin.js +53 -52
- package/lib/LoaderTargetPlugin.js +24 -24
- package/lib/MainTemplate.js +34 -9
- package/lib/Module.js +381 -377
- package/lib/ModuleBuildError.js +42 -42
- package/lib/ModuleDependencyError.js +35 -25
- package/lib/ModuleDependencyWarning.js +25 -25
- package/lib/ModuleError.js +28 -28
- package/lib/ModuleFilenameHelpers.js +178 -166
- package/lib/ModuleParseError.js +44 -44
- package/lib/ModuleReason.js +40 -40
- package/lib/ModuleTemplate.js +84 -84
- package/lib/ModuleWarning.js +30 -30
- package/lib/MultiCompiler.js +283 -271
- package/lib/MultiEntryPlugin.js +58 -58
- package/lib/MultiModule.js +81 -78
- 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 +179 -178
- package/lib/NormalModule.js +497 -490
- package/lib/NormalModuleFactory.js +501 -483
- package/lib/NormalModuleReplacementPlugin.js +51 -51
- package/lib/OptionsDefaulter.js +84 -80
- package/lib/Parser.js +2164 -2086
- package/lib/ParserHelpers.js +103 -100
- package/lib/PrefetchPlugin.js +37 -37
- package/lib/ProgressPlugin.js +231 -231
- package/lib/ProvidePlugin.js +86 -86
- package/lib/RawModule.js +56 -54
- package/lib/RecordIdsPlugin.js +166 -162
- package/lib/RemovedPluginError.js +13 -13
- package/lib/RequestShortener.js +81 -74
- package/lib/RequireJsStuffPlugin.js +69 -69
- package/lib/ResolverFactory.js +64 -64
- package/lib/RuleSet.js +555 -534
- package/lib/RuntimeTemplate.js +320 -277
- package/lib/SetVarMainTemplatePlugin.js +69 -57
- package/lib/SingleEntryPlugin.js +44 -44
- package/lib/SizeFormatHelpers.js +24 -24
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +49 -49
- package/lib/SourceMapDevToolPlugin.js +301 -300
- package/lib/Stats.js +1408 -1367
- package/lib/Template.js +4 -2
- package/lib/TemplatedPathPlugin.js +173 -170
- package/lib/UmdMainTemplatePlugin.js +304 -264
- package/lib/UseStrictPlugin.js +48 -48
- package/lib/WarnCaseSensitiveModulesPlugin.js +37 -36
- package/lib/WarnNoModeSetPlugin.js +17 -17
- package/lib/WatchIgnorePlugin.js +100 -100
- package/lib/Watching.js +194 -193
- package/lib/WebpackError.js +25 -19
- package/lib/WebpackOptionsApply.js +421 -405
- package/lib/WebpackOptionsDefaulter.js +347 -344
- package/lib/WebpackOptionsValidationError.js +345 -316
- package/lib/compareLocations.js +56 -56
- package/lib/dependencies/AMDDefineDependency.js +137 -137
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +336 -327
- package/lib/dependencies/AMDPlugin.js +250 -250
- package/lib/dependencies/AMDRequireArrayDependency.js +49 -49
- package/lib/dependencies/AMDRequireContextDependency.js +20 -20
- package/lib/dependencies/AMDRequireDependenciesBlock.js +43 -43
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +273 -270
- package/lib/dependencies/AMDRequireDependency.js +135 -135
- package/lib/dependencies/CommonJsPlugin.js +161 -161
- package/lib/dependencies/CommonJsRequireContextDependency.js +23 -23
- package/lib/dependencies/CommonJsRequireDependencyParserPlugin.js +130 -130
- package/lib/dependencies/ConstDependency.js +33 -33
- package/lib/dependencies/ContextDependency.js +68 -68
- package/lib/dependencies/ContextDependencyTemplateAsId.js +42 -42
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +38 -38
- package/lib/dependencies/ContextElementDependency.js +21 -21
- package/lib/dependencies/DelegatedExportsDependency.js +33 -33
- package/lib/dependencies/DependencyReference.js +18 -18
- package/lib/dependencies/HarmonyAcceptDependency.js +45 -45
- package/lib/dependencies/HarmonyAcceptImportDependency.js +23 -23
- package/lib/dependencies/HarmonyCompatibilityDependency.js +31 -31
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +92 -90
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +139 -139
- package/lib/dependencies/HarmonyExportExpressionDependency.js +53 -53
- package/lib/dependencies/HarmonyExportHeaderDependency.js +30 -30
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +620 -603
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +54 -54
- package/lib/dependencies/HarmonyImportDependency.js +104 -94
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +217 -214
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +31 -31
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +166 -156
- 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 +233 -232
- package/lib/dependencies/ImportPlugin.js +82 -82
- package/lib/dependencies/ImportWeakDependency.js +34 -34
- package/lib/dependencies/JsonExportsDependency.js +26 -26
- package/lib/dependencies/LoaderPlugin.js +98 -93
- package/lib/dependencies/LocalModuleDependency.js +28 -28
- package/lib/dependencies/LocalModulesHelpers.js +52 -45
- package/lib/dependencies/ModuleDependency.js +20 -20
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +17 -17
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +17 -17
- package/lib/dependencies/MultiEntryDependency.js +20 -20
- package/lib/dependencies/NullDependency.js +20 -20
- package/lib/dependencies/RequireContextDependency.js +22 -22
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +56 -56
- package/lib/dependencies/RequireContextPlugin.js +143 -141
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +33 -33
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +116 -112
- package/lib/dependencies/RequireEnsureDependency.js +58 -58
- package/lib/dependencies/RequireEnsurePlugin.js +74 -74
- package/lib/dependencies/RequireHeaderDependency.js +26 -26
- package/lib/dependencies/RequireIncludeDependency.js +39 -39
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +23 -23
- package/lib/dependencies/RequireIncludePlugin.js +61 -61
- package/lib/dependencies/RequireResolveContextDependency.js +23 -23
- package/lib/dependencies/RequireResolveDependencyParserPlugin.js +85 -85
- package/lib/dependencies/RequireResolveHeaderDependency.js +26 -26
- package/lib/dependencies/SingleEntryDependency.js +18 -18
- package/lib/dependencies/SystemPlugin.js +125 -125
- package/lib/dependencies/UnsupportedDependency.js +27 -27
- package/lib/dependencies/WebAssemblyImportDependency.js +48 -44
- package/lib/dependencies/WebpackMissingModule.js +20 -20
- package/lib/dependencies/getFunctionExpression.js +52 -52
- package/lib/formatLocation.js +61 -53
- 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/NodeMainTemplateAsync.runtime.js +44 -44
- package/lib/node/NodeMainTemplatePlugin.js +323 -320
- package/lib/node/NodeSourcePlugin.js +144 -140
- package/lib/node/NodeTargetPlugin.js +18 -18
- package/lib/node/NodeTemplatePlugin.js +31 -31
- package/lib/node/NodeWatchFileSystem.js +99 -82
- package/lib/node/ReadFileCompileWasmTemplatePlugin.js +52 -52
- package/lib/optimize/AggressiveMergingPlugin.js +87 -87
- package/lib/optimize/AggressiveSplittingPlugin.js +287 -281
- package/lib/optimize/ChunkModuleIdRangePlugin.js +68 -68
- package/lib/optimize/ConcatenatedModule.js +1420 -1413
- 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 -75
- package/lib/optimize/MinChunkSizePlugin.js +77 -77
- package/lib/optimize/ModuleConcatenationPlugin.js +470 -457
- package/lib/optimize/OccurrenceOrderPlugin.js +133 -126
- package/lib/optimize/RemoveParentModulesPlugin.js +127 -117
- package/lib/optimize/RuntimeChunkPlugin.js +41 -41
- package/lib/optimize/SideEffectsFlagPlugin.js +158 -156
- package/lib/optimize/SplitChunksPlugin.js +709 -696
- package/lib/performance/AssetsOverSizeLimitWarning.js +30 -30
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +31 -31
- package/lib/performance/NoAsyncChunksWarning.js +21 -21
- package/lib/performance/SizeLimitsPlugin.js +105 -105
- package/lib/util/Semaphore.js +41 -41
- package/lib/util/SortableSet.js +5 -2
- package/lib/util/StackedSetMap.js +12 -5
- package/lib/util/TrackingSet.js +35 -35
- package/lib/util/cachedMerge.js +35 -35
- package/lib/util/createHash.js +77 -77
- package/lib/util/identifier.js +76 -76
- package/lib/validateSchema.js +67 -67
- package/lib/wasm/UnsupportedWebAssemblyFeatureError.js +18 -18
- package/lib/wasm/WasmMainTemplatePlugin.js +310 -304
- package/lib/wasm/WebAssemblyGenerator.js +143 -19
- package/lib/wasm/WebAssemblyJavascriptGenerator.js +90 -107
- package/lib/wasm/WebAssemblyModulesPlugin.js +80 -80
- package/lib/wasm/WebAssemblyParser.js +28 -5
- package/lib/wasm/WebAssemblyUtils.js +48 -0
- package/lib/web/FetchCompileWasmTemplatePlugin.js +25 -25
- package/lib/web/JsonpChunkTemplatePlugin.js +47 -47
- package/lib/web/JsonpExportMainTemplatePlugin.js +47 -47
- package/lib/web/JsonpHotUpdateChunkTemplatePlugin.js +39 -39
- package/lib/web/JsonpMainTemplate.runtime.js +65 -64
- package/lib/web/JsonpMainTemplatePlugin.js +576 -574
- package/lib/web/JsonpTemplatePlugin.js +23 -23
- package/lib/webpack.js +183 -182
- package/lib/webpack.web.js +31 -31
- package/lib/webworker/WebWorkerChunkTemplatePlugin.js +35 -35
- package/lib/webworker/WebWorkerHotUpdateChunkTemplatePlugin.js +40 -40
- package/lib/webworker/WebWorkerMainTemplate.runtime.js +65 -64
- package/lib/webworker/WebWorkerMainTemplatePlugin.js +179 -179
- package/lib/webworker/WebWorkerTemplatePlugin.js +25 -25
- package/package.json +9 -8
- package/schemas/WebpackOptions.json +1988 -1988
- package/schemas/ajv.absolutePath.js +55 -55
- 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
@@ -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,53 +1,53 @@
|
|
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 HarmonyExportExpressionDependency extends NullDependency {
|
9
|
-
constructor(originModule, range, rangeStatement) {
|
10
|
-
super();
|
11
|
-
this.originModule = originModule;
|
12
|
-
this.range = range;
|
13
|
-
this.rangeStatement = rangeStatement;
|
14
|
-
}
|
15
|
-
|
16
|
-
get type() {
|
17
|
-
return "harmony export expression";
|
18
|
-
}
|
19
|
-
|
20
|
-
getExports() {
|
21
|
-
return {
|
22
|
-
exports: ["default"],
|
23
|
-
dependencies: undefined
|
24
|
-
};
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTemplate {
|
29
|
-
apply(dep, source) {
|
30
|
-
const used = dep.originModule.isUsed("default");
|
31
|
-
const content = this.getContent(dep.originModule, used);
|
32
|
-
|
33
|
-
if (dep.range) {
|
34
|
-
source.replace(dep.rangeStatement[0], dep.range[0] - 1, content + "(");
|
35
|
-
source.replace(dep.range[1], dep.rangeStatement[1] - 1, ");");
|
36
|
-
return;
|
37
|
-
}
|
38
|
-
|
39
|
-
source.replace(dep.rangeStatement[0], dep.rangeStatement[1] - 1, content);
|
40
|
-
}
|
41
|
-
|
42
|
-
getContent(module, used) {
|
43
|
-
const exportsName = module.exportsArgument;
|
44
|
-
if (used) {
|
45
|
-
return `/* harmony default export */ ${exportsName}[${JSON.stringify(
|
46
|
-
used
|
47
|
-
)}] = `;
|
48
|
-
}
|
49
|
-
return "/* unused harmony default export */ var _unused_webpack_default_export = ";
|
50
|
-
}
|
51
|
-
};
|
52
|
-
|
53
|
-
module.exports = HarmonyExportExpressionDependency;
|
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 HarmonyExportExpressionDependency extends NullDependency {
|
9
|
+
constructor(originModule, range, rangeStatement) {
|
10
|
+
super();
|
11
|
+
this.originModule = originModule;
|
12
|
+
this.range = range;
|
13
|
+
this.rangeStatement = rangeStatement;
|
14
|
+
}
|
15
|
+
|
16
|
+
get type() {
|
17
|
+
return "harmony export expression";
|
18
|
+
}
|
19
|
+
|
20
|
+
getExports() {
|
21
|
+
return {
|
22
|
+
exports: ["default"],
|
23
|
+
dependencies: undefined
|
24
|
+
};
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTemplate {
|
29
|
+
apply(dep, source) {
|
30
|
+
const used = dep.originModule.isUsed("default");
|
31
|
+
const content = this.getContent(dep.originModule, used);
|
32
|
+
|
33
|
+
if (dep.range) {
|
34
|
+
source.replace(dep.rangeStatement[0], dep.range[0] - 1, content + "(");
|
35
|
+
source.replace(dep.range[1], dep.rangeStatement[1] - 1, ");");
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
|
39
|
+
source.replace(dep.rangeStatement[0], dep.rangeStatement[1] - 1, content);
|
40
|
+
}
|
41
|
+
|
42
|
+
getContent(module, used) {
|
43
|
+
const exportsName = module.exportsArgument;
|
44
|
+
if (used) {
|
45
|
+
return `/* harmony default export */ ${exportsName}[${JSON.stringify(
|
46
|
+
used
|
47
|
+
)}] = `;
|
48
|
+
}
|
49
|
+
return "/* unused harmony default export */ var _unused_webpack_default_export = ";
|
50
|
+
}
|
51
|
+
};
|
52
|
+
|
53
|
+
module.exports = HarmonyExportExpressionDependency;
|
@@ -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;
|