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,263 +1,263 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const ImportContextDependency = require("./ImportContextDependency");
|
8
|
-
const ImportWeakDependency = require("./ImportWeakDependency");
|
9
|
-
const ImportDependenciesBlock = require("./ImportDependenciesBlock");
|
10
|
-
const ImportEagerDependency = require("./ImportEagerDependency");
|
11
|
-
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
12
|
-
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
13
|
-
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
14
|
-
|
15
|
-
class ImportParserPlugin {
|
16
|
-
constructor(options) {
|
17
|
-
this.options = options;
|
18
|
-
}
|
19
|
-
|
20
|
-
apply(parser) {
|
21
|
-
parser.hooks.importCall.tap("ImportParserPlugin", expr => {
|
22
|
-
if (expr.arguments.length !== 1) {
|
23
|
-
throw new Error(
|
24
|
-
"Incorrect number of arguments provided to 'import(module: string) -> Promise'."
|
25
|
-
);
|
26
|
-
}
|
27
|
-
|
28
|
-
const param = parser.evaluateExpression(expr.arguments[0]);
|
29
|
-
|
30
|
-
let chunkName = null;
|
31
|
-
let mode = "lazy";
|
32
|
-
let include = null;
|
33
|
-
let exclude = null;
|
34
|
-
const groupOptions = {};
|
35
|
-
|
36
|
-
const {
|
37
|
-
options: importOptions,
|
38
|
-
errors: commentErrors
|
39
|
-
} = parser.parseCommentOptions(expr.range);
|
40
|
-
|
41
|
-
if (commentErrors) {
|
42
|
-
for (const e of commentErrors) {
|
43
|
-
const { comment } = e;
|
44
|
-
parser.state.module.warnings.push(
|
45
|
-
new CommentCompilationWarning(
|
46
|
-
`Compilation error while processing magic comment(-s): /*${
|
47
|
-
comment.value
|
48
|
-
}*/: ${e.message}`,
|
49
|
-
parser.state.module,
|
50
|
-
comment.loc
|
51
|
-
)
|
52
|
-
);
|
53
|
-
}
|
54
|
-
}
|
55
|
-
|
56
|
-
if (importOptions) {
|
57
|
-
if (typeof importOptions.webpackIgnore !== "undefined") {
|
58
|
-
if (typeof importOptions.webpackIgnore !== "boolean") {
|
59
|
-
parser.state.module.warnings.push(
|
60
|
-
new UnsupportedFeatureWarning(
|
61
|
-
parser.state.module,
|
62
|
-
`\`webpackIgnore\` expected a boolean, but received: ${
|
63
|
-
importOptions.webpackIgnore
|
64
|
-
}.`,
|
65
|
-
expr.loc
|
66
|
-
)
|
67
|
-
);
|
68
|
-
} else {
|
69
|
-
// Do not instrument `import()` is `webpackIgnore` is `true`
|
70
|
-
if (importOptions.webpackIgnore) {
|
71
|
-
return false;
|
72
|
-
}
|
73
|
-
}
|
74
|
-
}
|
75
|
-
if (typeof importOptions.webpackChunkName !== "undefined") {
|
76
|
-
if (typeof importOptions.webpackChunkName !== "string") {
|
77
|
-
parser.state.module.warnings.push(
|
78
|
-
new UnsupportedFeatureWarning(
|
79
|
-
parser.state.module,
|
80
|
-
`\`webpackChunkName\` expected a string, but received: ${
|
81
|
-
importOptions.webpackChunkName
|
82
|
-
}.`,
|
83
|
-
expr.loc
|
84
|
-
)
|
85
|
-
);
|
86
|
-
} else {
|
87
|
-
chunkName = importOptions.webpackChunkName;
|
88
|
-
}
|
89
|
-
}
|
90
|
-
if (typeof importOptions.webpackMode !== "undefined") {
|
91
|
-
if (typeof importOptions.webpackMode !== "string") {
|
92
|
-
parser.state.module.warnings.push(
|
93
|
-
new UnsupportedFeatureWarning(
|
94
|
-
parser.state.module,
|
95
|
-
`\`webpackMode\` expected a string, but received: ${
|
96
|
-
importOptions.webpackMode
|
97
|
-
}.`,
|
98
|
-
expr.loc
|
99
|
-
)
|
100
|
-
);
|
101
|
-
} else {
|
102
|
-
mode = importOptions.webpackMode;
|
103
|
-
}
|
104
|
-
}
|
105
|
-
if (typeof importOptions.webpackPrefetch !== "undefined") {
|
106
|
-
if (importOptions.webpackPrefetch === true) {
|
107
|
-
groupOptions.prefetchOrder = 0;
|
108
|
-
} else if (typeof importOptions.webpackPrefetch === "number") {
|
109
|
-
groupOptions.prefetchOrder = importOptions.webpackPrefetch;
|
110
|
-
} else {
|
111
|
-
parser.state.module.warnings.push(
|
112
|
-
new UnsupportedFeatureWarning(
|
113
|
-
parser.state.module,
|
114
|
-
`\`webpackPrefetch\` expected true or a number, but received: ${
|
115
|
-
importOptions.webpackPrefetch
|
116
|
-
}.`,
|
117
|
-
expr.loc
|
118
|
-
)
|
119
|
-
);
|
120
|
-
}
|
121
|
-
}
|
122
|
-
if (typeof importOptions.webpackPreload !== "undefined") {
|
123
|
-
if (importOptions.webpackPreload === true) {
|
124
|
-
groupOptions.preloadOrder = 0;
|
125
|
-
} else if (typeof importOptions.webpackPreload === "number") {
|
126
|
-
groupOptions.preloadOrder = importOptions.webpackPreload;
|
127
|
-
} else {
|
128
|
-
parser.state.module.warnings.push(
|
129
|
-
new UnsupportedFeatureWarning(
|
130
|
-
parser.state.module,
|
131
|
-
`\`webpackPreload\` expected true or a number, but received: ${
|
132
|
-
importOptions.webpackPreload
|
133
|
-
}.`,
|
134
|
-
expr.loc
|
135
|
-
)
|
136
|
-
);
|
137
|
-
}
|
138
|
-
}
|
139
|
-
if (typeof importOptions.webpackInclude !== "undefined") {
|
140
|
-
if (
|
141
|
-
!importOptions.webpackInclude ||
|
142
|
-
importOptions.webpackInclude.constructor.name !== "RegExp"
|
143
|
-
) {
|
144
|
-
parser.state.module.warnings.push(
|
145
|
-
new UnsupportedFeatureWarning(
|
146
|
-
parser.state.module,
|
147
|
-
`\`webpackInclude\` expected a regular expression, but received: ${
|
148
|
-
importOptions.webpackInclude
|
149
|
-
}.`,
|
150
|
-
expr.loc
|
151
|
-
)
|
152
|
-
);
|
153
|
-
} else {
|
154
|
-
include = new RegExp(importOptions.webpackInclude);
|
155
|
-
}
|
156
|
-
}
|
157
|
-
if (typeof importOptions.webpackExclude !== "undefined") {
|
158
|
-
if (
|
159
|
-
!importOptions.webpackExclude ||
|
160
|
-
importOptions.webpackExclude.constructor.name !== "RegExp"
|
161
|
-
) {
|
162
|
-
parser.state.module.warnings.push(
|
163
|
-
new UnsupportedFeatureWarning(
|
164
|
-
parser.state.module,
|
165
|
-
`\`webpackExclude\` expected a regular expression, but received: ${
|
166
|
-
importOptions.webpackExclude
|
167
|
-
}.`,
|
168
|
-
expr.loc
|
169
|
-
)
|
170
|
-
);
|
171
|
-
} else {
|
172
|
-
exclude = new RegExp(importOptions.webpackExclude);
|
173
|
-
}
|
174
|
-
}
|
175
|
-
}
|
176
|
-
|
177
|
-
if (param.isString()) {
|
178
|
-
if (mode !== "lazy" && mode !== "eager" && mode !== "weak") {
|
179
|
-
parser.state.module.warnings.push(
|
180
|
-
new UnsupportedFeatureWarning(
|
181
|
-
parser.state.module,
|
182
|
-
`\`webpackMode\` expected 'lazy', 'eager' or 'weak', but received: ${mode}.`,
|
183
|
-
expr.loc
|
184
|
-
)
|
185
|
-
);
|
186
|
-
}
|
187
|
-
|
188
|
-
if (mode === "eager") {
|
189
|
-
const dep = new ImportEagerDependency(
|
190
|
-
param.string,
|
191
|
-
parser.state.module,
|
192
|
-
expr.range
|
193
|
-
);
|
194
|
-
parser.state.current.addDependency(dep);
|
195
|
-
} else if (mode === "weak") {
|
196
|
-
const dep = new ImportWeakDependency(
|
197
|
-
param.string,
|
198
|
-
parser.state.module,
|
199
|
-
expr.range
|
200
|
-
);
|
201
|
-
parser.state.current.addDependency(dep);
|
202
|
-
} else {
|
203
|
-
const depBlock = new ImportDependenciesBlock(
|
204
|
-
param.string,
|
205
|
-
expr.range,
|
206
|
-
Object.assign(groupOptions, {
|
207
|
-
name: chunkName
|
208
|
-
}),
|
209
|
-
parser.state.module,
|
210
|
-
expr.loc,
|
211
|
-
parser.state.module
|
212
|
-
);
|
213
|
-
parser.state.current.addBlock(depBlock);
|
214
|
-
}
|
215
|
-
return true;
|
216
|
-
} else {
|
217
|
-
if (
|
218
|
-
mode !== "lazy" &&
|
219
|
-
mode !== "lazy-once" &&
|
220
|
-
mode !== "eager" &&
|
221
|
-
mode !== "weak"
|
222
|
-
) {
|
223
|
-
parser.state.module.warnings.push(
|
224
|
-
new UnsupportedFeatureWarning(
|
225
|
-
parser.state.module,
|
226
|
-
`\`webpackMode\` expected 'lazy', 'lazy-once', 'eager' or 'weak', but received: ${mode}.`,
|
227
|
-
expr.loc
|
228
|
-
)
|
229
|
-
);
|
230
|
-
mode = "lazy";
|
231
|
-
}
|
232
|
-
|
233
|
-
if (mode === "weak") {
|
234
|
-
mode = "async-weak";
|
235
|
-
}
|
236
|
-
const dep = ContextDependencyHelpers.create(
|
237
|
-
ImportContextDependency,
|
238
|
-
expr.range,
|
239
|
-
param,
|
240
|
-
expr,
|
241
|
-
this.options,
|
242
|
-
{
|
243
|
-
chunkName,
|
244
|
-
groupOptions,
|
245
|
-
include,
|
246
|
-
exclude,
|
247
|
-
mode,
|
248
|
-
namespaceObject: parser.state.module.buildMeta.strictHarmonyModule
|
249
|
-
? "strict"
|
250
|
-
: true
|
251
|
-
}
|
252
|
-
);
|
253
|
-
if (!dep) return;
|
254
|
-
dep.loc = expr.loc;
|
255
|
-
dep.optional = !!parser.scope.inTry;
|
256
|
-
parser.state.current.addDependency(dep);
|
257
|
-
return true;
|
258
|
-
}
|
259
|
-
});
|
260
|
-
}
|
261
|
-
}
|
262
|
-
|
263
|
-
module.exports = ImportParserPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const ImportContextDependency = require("./ImportContextDependency");
|
8
|
+
const ImportWeakDependency = require("./ImportWeakDependency");
|
9
|
+
const ImportDependenciesBlock = require("./ImportDependenciesBlock");
|
10
|
+
const ImportEagerDependency = require("./ImportEagerDependency");
|
11
|
+
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
12
|
+
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
13
|
+
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
14
|
+
|
15
|
+
class ImportParserPlugin {
|
16
|
+
constructor(options) {
|
17
|
+
this.options = options;
|
18
|
+
}
|
19
|
+
|
20
|
+
apply(parser) {
|
21
|
+
parser.hooks.importCall.tap("ImportParserPlugin", expr => {
|
22
|
+
if (expr.arguments.length !== 1) {
|
23
|
+
throw new Error(
|
24
|
+
"Incorrect number of arguments provided to 'import(module: string) -> Promise'."
|
25
|
+
);
|
26
|
+
}
|
27
|
+
|
28
|
+
const param = parser.evaluateExpression(expr.arguments[0]);
|
29
|
+
|
30
|
+
let chunkName = null;
|
31
|
+
let mode = "lazy";
|
32
|
+
let include = null;
|
33
|
+
let exclude = null;
|
34
|
+
const groupOptions = {};
|
35
|
+
|
36
|
+
const {
|
37
|
+
options: importOptions,
|
38
|
+
errors: commentErrors
|
39
|
+
} = parser.parseCommentOptions(expr.range);
|
40
|
+
|
41
|
+
if (commentErrors) {
|
42
|
+
for (const e of commentErrors) {
|
43
|
+
const { comment } = e;
|
44
|
+
parser.state.module.warnings.push(
|
45
|
+
new CommentCompilationWarning(
|
46
|
+
`Compilation error while processing magic comment(-s): /*${
|
47
|
+
comment.value
|
48
|
+
}*/: ${e.message}`,
|
49
|
+
parser.state.module,
|
50
|
+
comment.loc
|
51
|
+
)
|
52
|
+
);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
if (importOptions) {
|
57
|
+
if (typeof importOptions.webpackIgnore !== "undefined") {
|
58
|
+
if (typeof importOptions.webpackIgnore !== "boolean") {
|
59
|
+
parser.state.module.warnings.push(
|
60
|
+
new UnsupportedFeatureWarning(
|
61
|
+
parser.state.module,
|
62
|
+
`\`webpackIgnore\` expected a boolean, but received: ${
|
63
|
+
importOptions.webpackIgnore
|
64
|
+
}.`,
|
65
|
+
expr.loc
|
66
|
+
)
|
67
|
+
);
|
68
|
+
} else {
|
69
|
+
// Do not instrument `import()` is `webpackIgnore` is `true`
|
70
|
+
if (importOptions.webpackIgnore) {
|
71
|
+
return false;
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
if (typeof importOptions.webpackChunkName !== "undefined") {
|
76
|
+
if (typeof importOptions.webpackChunkName !== "string") {
|
77
|
+
parser.state.module.warnings.push(
|
78
|
+
new UnsupportedFeatureWarning(
|
79
|
+
parser.state.module,
|
80
|
+
`\`webpackChunkName\` expected a string, but received: ${
|
81
|
+
importOptions.webpackChunkName
|
82
|
+
}.`,
|
83
|
+
expr.loc
|
84
|
+
)
|
85
|
+
);
|
86
|
+
} else {
|
87
|
+
chunkName = importOptions.webpackChunkName;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
if (typeof importOptions.webpackMode !== "undefined") {
|
91
|
+
if (typeof importOptions.webpackMode !== "string") {
|
92
|
+
parser.state.module.warnings.push(
|
93
|
+
new UnsupportedFeatureWarning(
|
94
|
+
parser.state.module,
|
95
|
+
`\`webpackMode\` expected a string, but received: ${
|
96
|
+
importOptions.webpackMode
|
97
|
+
}.`,
|
98
|
+
expr.loc
|
99
|
+
)
|
100
|
+
);
|
101
|
+
} else {
|
102
|
+
mode = importOptions.webpackMode;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
if (typeof importOptions.webpackPrefetch !== "undefined") {
|
106
|
+
if (importOptions.webpackPrefetch === true) {
|
107
|
+
groupOptions.prefetchOrder = 0;
|
108
|
+
} else if (typeof importOptions.webpackPrefetch === "number") {
|
109
|
+
groupOptions.prefetchOrder = importOptions.webpackPrefetch;
|
110
|
+
} else {
|
111
|
+
parser.state.module.warnings.push(
|
112
|
+
new UnsupportedFeatureWarning(
|
113
|
+
parser.state.module,
|
114
|
+
`\`webpackPrefetch\` expected true or a number, but received: ${
|
115
|
+
importOptions.webpackPrefetch
|
116
|
+
}.`,
|
117
|
+
expr.loc
|
118
|
+
)
|
119
|
+
);
|
120
|
+
}
|
121
|
+
}
|
122
|
+
if (typeof importOptions.webpackPreload !== "undefined") {
|
123
|
+
if (importOptions.webpackPreload === true) {
|
124
|
+
groupOptions.preloadOrder = 0;
|
125
|
+
} else if (typeof importOptions.webpackPreload === "number") {
|
126
|
+
groupOptions.preloadOrder = importOptions.webpackPreload;
|
127
|
+
} else {
|
128
|
+
parser.state.module.warnings.push(
|
129
|
+
new UnsupportedFeatureWarning(
|
130
|
+
parser.state.module,
|
131
|
+
`\`webpackPreload\` expected true or a number, but received: ${
|
132
|
+
importOptions.webpackPreload
|
133
|
+
}.`,
|
134
|
+
expr.loc
|
135
|
+
)
|
136
|
+
);
|
137
|
+
}
|
138
|
+
}
|
139
|
+
if (typeof importOptions.webpackInclude !== "undefined") {
|
140
|
+
if (
|
141
|
+
!importOptions.webpackInclude ||
|
142
|
+
importOptions.webpackInclude.constructor.name !== "RegExp"
|
143
|
+
) {
|
144
|
+
parser.state.module.warnings.push(
|
145
|
+
new UnsupportedFeatureWarning(
|
146
|
+
parser.state.module,
|
147
|
+
`\`webpackInclude\` expected a regular expression, but received: ${
|
148
|
+
importOptions.webpackInclude
|
149
|
+
}.`,
|
150
|
+
expr.loc
|
151
|
+
)
|
152
|
+
);
|
153
|
+
} else {
|
154
|
+
include = new RegExp(importOptions.webpackInclude);
|
155
|
+
}
|
156
|
+
}
|
157
|
+
if (typeof importOptions.webpackExclude !== "undefined") {
|
158
|
+
if (
|
159
|
+
!importOptions.webpackExclude ||
|
160
|
+
importOptions.webpackExclude.constructor.name !== "RegExp"
|
161
|
+
) {
|
162
|
+
parser.state.module.warnings.push(
|
163
|
+
new UnsupportedFeatureWarning(
|
164
|
+
parser.state.module,
|
165
|
+
`\`webpackExclude\` expected a regular expression, but received: ${
|
166
|
+
importOptions.webpackExclude
|
167
|
+
}.`,
|
168
|
+
expr.loc
|
169
|
+
)
|
170
|
+
);
|
171
|
+
} else {
|
172
|
+
exclude = new RegExp(importOptions.webpackExclude);
|
173
|
+
}
|
174
|
+
}
|
175
|
+
}
|
176
|
+
|
177
|
+
if (param.isString()) {
|
178
|
+
if (mode !== "lazy" && mode !== "eager" && mode !== "weak") {
|
179
|
+
parser.state.module.warnings.push(
|
180
|
+
new UnsupportedFeatureWarning(
|
181
|
+
parser.state.module,
|
182
|
+
`\`webpackMode\` expected 'lazy', 'eager' or 'weak', but received: ${mode}.`,
|
183
|
+
expr.loc
|
184
|
+
)
|
185
|
+
);
|
186
|
+
}
|
187
|
+
|
188
|
+
if (mode === "eager") {
|
189
|
+
const dep = new ImportEagerDependency(
|
190
|
+
param.string,
|
191
|
+
parser.state.module,
|
192
|
+
expr.range
|
193
|
+
);
|
194
|
+
parser.state.current.addDependency(dep);
|
195
|
+
} else if (mode === "weak") {
|
196
|
+
const dep = new ImportWeakDependency(
|
197
|
+
param.string,
|
198
|
+
parser.state.module,
|
199
|
+
expr.range
|
200
|
+
);
|
201
|
+
parser.state.current.addDependency(dep);
|
202
|
+
} else {
|
203
|
+
const depBlock = new ImportDependenciesBlock(
|
204
|
+
param.string,
|
205
|
+
expr.range,
|
206
|
+
Object.assign(groupOptions, {
|
207
|
+
name: chunkName
|
208
|
+
}),
|
209
|
+
parser.state.module,
|
210
|
+
expr.loc,
|
211
|
+
parser.state.module
|
212
|
+
);
|
213
|
+
parser.state.current.addBlock(depBlock);
|
214
|
+
}
|
215
|
+
return true;
|
216
|
+
} else {
|
217
|
+
if (
|
218
|
+
mode !== "lazy" &&
|
219
|
+
mode !== "lazy-once" &&
|
220
|
+
mode !== "eager" &&
|
221
|
+
mode !== "weak"
|
222
|
+
) {
|
223
|
+
parser.state.module.warnings.push(
|
224
|
+
new UnsupportedFeatureWarning(
|
225
|
+
parser.state.module,
|
226
|
+
`\`webpackMode\` expected 'lazy', 'lazy-once', 'eager' or 'weak', but received: ${mode}.`,
|
227
|
+
expr.loc
|
228
|
+
)
|
229
|
+
);
|
230
|
+
mode = "lazy";
|
231
|
+
}
|
232
|
+
|
233
|
+
if (mode === "weak") {
|
234
|
+
mode = "async-weak";
|
235
|
+
}
|
236
|
+
const dep = ContextDependencyHelpers.create(
|
237
|
+
ImportContextDependency,
|
238
|
+
expr.range,
|
239
|
+
param,
|
240
|
+
expr,
|
241
|
+
this.options,
|
242
|
+
{
|
243
|
+
chunkName,
|
244
|
+
groupOptions,
|
245
|
+
include,
|
246
|
+
exclude,
|
247
|
+
mode,
|
248
|
+
namespaceObject: parser.state.module.buildMeta.strictHarmonyModule
|
249
|
+
? "strict"
|
250
|
+
: true
|
251
|
+
}
|
252
|
+
);
|
253
|
+
if (!dep) return;
|
254
|
+
dep.loc = expr.loc;
|
255
|
+
dep.optional = !!parser.scope.inTry;
|
256
|
+
parser.state.current.addDependency(dep);
|
257
|
+
return true;
|
258
|
+
}
|
259
|
+
});
|
260
|
+
}
|
261
|
+
}
|
262
|
+
|
263
|
+
module.exports = ImportParserPlugin;
|