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,133 +1,133 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const path = require("path");
|
8
|
-
const ContextElementDependency = require("./dependencies/ContextElementDependency");
|
9
|
-
|
10
|
-
class ContextReplacementPlugin {
|
11
|
-
constructor(
|
12
|
-
resourceRegExp,
|
13
|
-
newContentResource,
|
14
|
-
newContentRecursive,
|
15
|
-
newContentRegExp
|
16
|
-
) {
|
17
|
-
this.resourceRegExp = resourceRegExp;
|
18
|
-
|
19
|
-
if (typeof newContentResource === "function") {
|
20
|
-
this.newContentCallback = newContentResource;
|
21
|
-
} else if (
|
22
|
-
typeof newContentResource === "string" &&
|
23
|
-
typeof newContentRecursive === "object"
|
24
|
-
) {
|
25
|
-
this.newContentResource = newContentResource;
|
26
|
-
this.newContentCreateContextMap = (fs, callback) => {
|
27
|
-
callback(null, newContentRecursive);
|
28
|
-
};
|
29
|
-
} else if (
|
30
|
-
typeof newContentResource === "string" &&
|
31
|
-
typeof newContentRecursive === "function"
|
32
|
-
) {
|
33
|
-
this.newContentResource = newContentResource;
|
34
|
-
this.newContentCreateContextMap = newContentRecursive;
|
35
|
-
} else {
|
36
|
-
if (typeof newContentResource !== "string") {
|
37
|
-
newContentRegExp = newContentRecursive;
|
38
|
-
newContentRecursive = newContentResource;
|
39
|
-
newContentResource = undefined;
|
40
|
-
}
|
41
|
-
if (typeof newContentRecursive !== "boolean") {
|
42
|
-
newContentRegExp = newContentRecursive;
|
43
|
-
newContentRecursive = undefined;
|
44
|
-
}
|
45
|
-
this.newContentResource = newContentResource;
|
46
|
-
this.newContentRecursive = newContentRecursive;
|
47
|
-
this.newContentRegExp = newContentRegExp;
|
48
|
-
}
|
49
|
-
}
|
50
|
-
|
51
|
-
apply(compiler) {
|
52
|
-
const resourceRegExp = this.resourceRegExp;
|
53
|
-
const newContentCallback = this.newContentCallback;
|
54
|
-
const newContentResource = this.newContentResource;
|
55
|
-
const newContentRecursive = this.newContentRecursive;
|
56
|
-
const newContentRegExp = this.newContentRegExp;
|
57
|
-
const newContentCreateContextMap = this.newContentCreateContextMap;
|
58
|
-
|
59
|
-
compiler.hooks.contextModuleFactory.tap("ContextReplacementPlugin", cmf => {
|
60
|
-
cmf.hooks.beforeResolve.tap("ContextReplacementPlugin", result => {
|
61
|
-
if (!result) return;
|
62
|
-
if (resourceRegExp.test(result.request)) {
|
63
|
-
if (typeof newContentResource !== "undefined") {
|
64
|
-
result.request = newContentResource;
|
65
|
-
}
|
66
|
-
if (typeof newContentRecursive !== "undefined") {
|
67
|
-
result.recursive = newContentRecursive;
|
68
|
-
}
|
69
|
-
if (typeof newContentRegExp !== "undefined") {
|
70
|
-
result.regExp = newContentRegExp;
|
71
|
-
}
|
72
|
-
if (typeof newContentCallback === "function") {
|
73
|
-
newContentCallback(result);
|
74
|
-
} else {
|
75
|
-
for (const d of result.dependencies) {
|
76
|
-
if (d.critical) d.critical = false;
|
77
|
-
}
|
78
|
-
}
|
79
|
-
}
|
80
|
-
return result;
|
81
|
-
});
|
82
|
-
cmf.hooks.afterResolve.tap("ContextReplacementPlugin", result => {
|
83
|
-
if (!result) return;
|
84
|
-
if (resourceRegExp.test(result.resource)) {
|
85
|
-
if (typeof newContentResource !== "undefined") {
|
86
|
-
result.resource = path.resolve(result.resource, newContentResource);
|
87
|
-
}
|
88
|
-
if (typeof newContentRecursive !== "undefined") {
|
89
|
-
result.recursive = newContentRecursive;
|
90
|
-
}
|
91
|
-
if (typeof newContentRegExp !== "undefined") {
|
92
|
-
result.regExp = newContentRegExp;
|
93
|
-
}
|
94
|
-
if (typeof newContentCreateContextMap === "function") {
|
95
|
-
result.resolveDependencies = createResolveDependenciesFromContextMap(
|
96
|
-
newContentCreateContextMap
|
97
|
-
);
|
98
|
-
}
|
99
|
-
if (typeof newContentCallback === "function") {
|
100
|
-
const origResource = result.resource;
|
101
|
-
newContentCallback(result);
|
102
|
-
if (result.resource !== origResource) {
|
103
|
-
result.resource = path.resolve(origResource, result.resource);
|
104
|
-
}
|
105
|
-
} else {
|
106
|
-
for (const d of result.dependencies) {
|
107
|
-
if (d.critical) d.critical = false;
|
108
|
-
}
|
109
|
-
}
|
110
|
-
}
|
111
|
-
return result;
|
112
|
-
});
|
113
|
-
});
|
114
|
-
}
|
115
|
-
}
|
116
|
-
|
117
|
-
const createResolveDependenciesFromContextMap = createContextMap => {
|
118
|
-
const resolveDependenciesFromContextMap = (fs, options, callback) => {
|
119
|
-
createContextMap(fs, (err, map) => {
|
120
|
-
if (err) return callback(err);
|
121
|
-
const dependencies = Object.keys(map).map(key => {
|
122
|
-
return new ContextElementDependency(
|
123
|
-
map[key] + options.resourceQuery,
|
124
|
-
key
|
125
|
-
);
|
126
|
-
});
|
127
|
-
callback(null, dependencies);
|
128
|
-
});
|
129
|
-
};
|
130
|
-
return resolveDependenciesFromContextMap;
|
131
|
-
};
|
132
|
-
|
133
|
-
module.exports = ContextReplacementPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const path = require("path");
|
8
|
+
const ContextElementDependency = require("./dependencies/ContextElementDependency");
|
9
|
+
|
10
|
+
class ContextReplacementPlugin {
|
11
|
+
constructor(
|
12
|
+
resourceRegExp,
|
13
|
+
newContentResource,
|
14
|
+
newContentRecursive,
|
15
|
+
newContentRegExp
|
16
|
+
) {
|
17
|
+
this.resourceRegExp = resourceRegExp;
|
18
|
+
|
19
|
+
if (typeof newContentResource === "function") {
|
20
|
+
this.newContentCallback = newContentResource;
|
21
|
+
} else if (
|
22
|
+
typeof newContentResource === "string" &&
|
23
|
+
typeof newContentRecursive === "object"
|
24
|
+
) {
|
25
|
+
this.newContentResource = newContentResource;
|
26
|
+
this.newContentCreateContextMap = (fs, callback) => {
|
27
|
+
callback(null, newContentRecursive);
|
28
|
+
};
|
29
|
+
} else if (
|
30
|
+
typeof newContentResource === "string" &&
|
31
|
+
typeof newContentRecursive === "function"
|
32
|
+
) {
|
33
|
+
this.newContentResource = newContentResource;
|
34
|
+
this.newContentCreateContextMap = newContentRecursive;
|
35
|
+
} else {
|
36
|
+
if (typeof newContentResource !== "string") {
|
37
|
+
newContentRegExp = newContentRecursive;
|
38
|
+
newContentRecursive = newContentResource;
|
39
|
+
newContentResource = undefined;
|
40
|
+
}
|
41
|
+
if (typeof newContentRecursive !== "boolean") {
|
42
|
+
newContentRegExp = newContentRecursive;
|
43
|
+
newContentRecursive = undefined;
|
44
|
+
}
|
45
|
+
this.newContentResource = newContentResource;
|
46
|
+
this.newContentRecursive = newContentRecursive;
|
47
|
+
this.newContentRegExp = newContentRegExp;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
apply(compiler) {
|
52
|
+
const resourceRegExp = this.resourceRegExp;
|
53
|
+
const newContentCallback = this.newContentCallback;
|
54
|
+
const newContentResource = this.newContentResource;
|
55
|
+
const newContentRecursive = this.newContentRecursive;
|
56
|
+
const newContentRegExp = this.newContentRegExp;
|
57
|
+
const newContentCreateContextMap = this.newContentCreateContextMap;
|
58
|
+
|
59
|
+
compiler.hooks.contextModuleFactory.tap("ContextReplacementPlugin", cmf => {
|
60
|
+
cmf.hooks.beforeResolve.tap("ContextReplacementPlugin", result => {
|
61
|
+
if (!result) return;
|
62
|
+
if (resourceRegExp.test(result.request)) {
|
63
|
+
if (typeof newContentResource !== "undefined") {
|
64
|
+
result.request = newContentResource;
|
65
|
+
}
|
66
|
+
if (typeof newContentRecursive !== "undefined") {
|
67
|
+
result.recursive = newContentRecursive;
|
68
|
+
}
|
69
|
+
if (typeof newContentRegExp !== "undefined") {
|
70
|
+
result.regExp = newContentRegExp;
|
71
|
+
}
|
72
|
+
if (typeof newContentCallback === "function") {
|
73
|
+
newContentCallback(result);
|
74
|
+
} else {
|
75
|
+
for (const d of result.dependencies) {
|
76
|
+
if (d.critical) d.critical = false;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
return result;
|
81
|
+
});
|
82
|
+
cmf.hooks.afterResolve.tap("ContextReplacementPlugin", result => {
|
83
|
+
if (!result) return;
|
84
|
+
if (resourceRegExp.test(result.resource)) {
|
85
|
+
if (typeof newContentResource !== "undefined") {
|
86
|
+
result.resource = path.resolve(result.resource, newContentResource);
|
87
|
+
}
|
88
|
+
if (typeof newContentRecursive !== "undefined") {
|
89
|
+
result.recursive = newContentRecursive;
|
90
|
+
}
|
91
|
+
if (typeof newContentRegExp !== "undefined") {
|
92
|
+
result.regExp = newContentRegExp;
|
93
|
+
}
|
94
|
+
if (typeof newContentCreateContextMap === "function") {
|
95
|
+
result.resolveDependencies = createResolveDependenciesFromContextMap(
|
96
|
+
newContentCreateContextMap
|
97
|
+
);
|
98
|
+
}
|
99
|
+
if (typeof newContentCallback === "function") {
|
100
|
+
const origResource = result.resource;
|
101
|
+
newContentCallback(result);
|
102
|
+
if (result.resource !== origResource) {
|
103
|
+
result.resource = path.resolve(origResource, result.resource);
|
104
|
+
}
|
105
|
+
} else {
|
106
|
+
for (const d of result.dependencies) {
|
107
|
+
if (d.critical) d.critical = false;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
}
|
111
|
+
return result;
|
112
|
+
});
|
113
|
+
});
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
const createResolveDependenciesFromContextMap = createContextMap => {
|
118
|
+
const resolveDependenciesFromContextMap = (fs, options, callback) => {
|
119
|
+
createContextMap(fs, (err, map) => {
|
120
|
+
if (err) return callback(err);
|
121
|
+
const dependencies = Object.keys(map).map(key => {
|
122
|
+
return new ContextElementDependency(
|
123
|
+
map[key] + options.resourceQuery,
|
124
|
+
key
|
125
|
+
);
|
126
|
+
});
|
127
|
+
callback(null, dependencies);
|
128
|
+
});
|
129
|
+
};
|
130
|
+
return resolveDependenciesFromContextMap;
|
131
|
+
};
|
132
|
+
|
133
|
+
module.exports = ContextReplacementPlugin;
|
package/lib/DefinePlugin.js
CHANGED
@@ -9,6 +9,11 @@ const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
|
9
9
|
const ParserHelpers = require("./ParserHelpers");
|
10
10
|
const NullFactory = require("./NullFactory");
|
11
11
|
|
12
|
+
/** @typedef {import("./Compiler")} Compiler */
|
13
|
+
/** @typedef {import("./Parser")} Parser */
|
14
|
+
/** @typedef {null|undefined|RegExp|Function|string|number} CodeValuePrimitive */
|
15
|
+
/** @typedef {CodeValuePrimitive|Record<string, CodeValuePrimitive>|RuntimeValue} CodeValue */
|
16
|
+
|
12
17
|
class RuntimeValue {
|
13
18
|
constructor(fn, fileDependencies) {
|
14
19
|
this.fn = fn;
|
@@ -37,6 +42,12 @@ const stringifyObj = (obj, parser) => {
|
|
37
42
|
);
|
38
43
|
};
|
39
44
|
|
45
|
+
/**
|
46
|
+
* Convert code to a string that evaluates
|
47
|
+
* @param {CodeValue} code Code to evaluate
|
48
|
+
* @param {Parser} parser Parser
|
49
|
+
* @returns {string} code converted to string that evaluates
|
50
|
+
*/
|
40
51
|
const toCode = (code, parser) => {
|
41
52
|
if (code === null) {
|
42
53
|
return "null";
|
@@ -60,6 +71,10 @@ const toCode = (code, parser) => {
|
|
60
71
|
};
|
61
72
|
|
62
73
|
class DefinePlugin {
|
74
|
+
/**
|
75
|
+
* Create a new define plugin
|
76
|
+
* @param {Record<string, CodeValue>} definitions A map of global object definitions
|
77
|
+
*/
|
63
78
|
constructor(definitions) {
|
64
79
|
this.definitions = definitions;
|
65
80
|
}
|
@@ -68,6 +83,11 @@ class DefinePlugin {
|
|
68
83
|
return new RuntimeValue(fn, fileDependencies);
|
69
84
|
}
|
70
85
|
|
86
|
+
/**
|
87
|
+
* Apply the plugin
|
88
|
+
* @param {Compiler} compiler Webpack compiler
|
89
|
+
* @returns {void}
|
90
|
+
*/
|
71
91
|
apply(compiler) {
|
72
92
|
const definitions = this.definitions;
|
73
93
|
compiler.hooks.compilation.tap(
|
@@ -79,7 +99,18 @@ class DefinePlugin {
|
|
79
99
|
new ConstDependency.Template()
|
80
100
|
);
|
81
101
|
|
102
|
+
/**
|
103
|
+
* Handler
|
104
|
+
* @param {Parser} parser Parser
|
105
|
+
* @returns {void}
|
106
|
+
*/
|
82
107
|
const handler = parser => {
|
108
|
+
/**
|
109
|
+
* Walk definitions
|
110
|
+
* @param {Object} definitions Definitions map
|
111
|
+
* @param {string} prefix Prefix string
|
112
|
+
* @returns {void}
|
113
|
+
*/
|
83
114
|
const walkDefinitions = (definitions, prefix) => {
|
84
115
|
Object.keys(definitions).forEach(key => {
|
85
116
|
const code = definitions[key];
|
@@ -98,6 +129,12 @@ class DefinePlugin {
|
|
98
129
|
});
|
99
130
|
};
|
100
131
|
|
132
|
+
/**
|
133
|
+
* Apply define key
|
134
|
+
* @param {string} prefix Prefix
|
135
|
+
* @param {string} key Key
|
136
|
+
* @returns {void}
|
137
|
+
*/
|
101
138
|
const applyDefineKey = (prefix, key) => {
|
102
139
|
const splittedKey = key.split(".");
|
103
140
|
splittedKey.slice(1).forEach((_, i) => {
|
@@ -108,6 +145,12 @@ class DefinePlugin {
|
|
108
145
|
});
|
109
146
|
};
|
110
147
|
|
148
|
+
/**
|
149
|
+
* Apply Code
|
150
|
+
* @param {string} key Key
|
151
|
+
* @param {CodeValue} code Code
|
152
|
+
* @returns {void}
|
153
|
+
*/
|
111
154
|
const applyDefine = (key, code) => {
|
112
155
|
const isTypeof = /^typeof\s+/.test(key);
|
113
156
|
if (isTypeof) key = key.replace(/^typeof\s+/, "");
|
@@ -181,6 +224,12 @@ class DefinePlugin {
|
|
181
224
|
});
|
182
225
|
};
|
183
226
|
|
227
|
+
/**
|
228
|
+
* Apply Object
|
229
|
+
* @param {string} key Key
|
230
|
+
* @param {Object} obj Object
|
231
|
+
* @returns {void}
|
232
|
+
*/
|
184
233
|
const applyObjectDefine = (key, obj) => {
|
185
234
|
parser.hooks.canRename
|
186
235
|
.for(key)
|
package/lib/DelegatedModule.js
CHANGED
@@ -12,6 +12,7 @@ const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDepende
|
|
12
12
|
const DelegatedExportsDependency = require("./dependencies/DelegatedExportsDependency");
|
13
13
|
|
14
14
|
/** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
|
15
|
+
/** @typedef {import("./util/createHash").Hash} Hash */
|
15
16
|
|
16
17
|
class DelegatedModule extends Module {
|
17
18
|
constructor(sourceRequest, data, type, userRequest, originalRequest) {
|
@@ -99,6 +100,10 @@ class DelegatedModule extends Module {
|
|
99
100
|
return 42;
|
100
101
|
}
|
101
102
|
|
103
|
+
/**
|
104
|
+
* @param {Hash} hash the hash used to track dependencies
|
105
|
+
* @returns {void}
|
106
|
+
*/
|
102
107
|
updateHash(hash) {
|
103
108
|
hash.update(this.type);
|
104
109
|
hash.update(JSON.stringify(this.request));
|
@@ -1,89 +1,95 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const DelegatedModule = require("./DelegatedModule");
|
8
|
-
|
9
|
-
// options.source
|
10
|
-
// options.type
|
11
|
-
// options.context
|
12
|
-
// options.scope
|
13
|
-
// options.content
|
14
|
-
class DelegatedModuleFactoryPlugin {
|
15
|
-
constructor(options) {
|
16
|
-
this.options = options;
|
17
|
-
options.type = options.type || "require";
|
18
|
-
options.extensions = options.extensions || [
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
}
|
89
|
-
module
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const DelegatedModule = require("./DelegatedModule");
|
8
|
+
|
9
|
+
// options.source
|
10
|
+
// options.type
|
11
|
+
// options.context
|
12
|
+
// options.scope
|
13
|
+
// options.content
|
14
|
+
class DelegatedModuleFactoryPlugin {
|
15
|
+
constructor(options) {
|
16
|
+
this.options = options;
|
17
|
+
options.type = options.type || "require";
|
18
|
+
options.extensions = options.extensions || [
|
19
|
+
"",
|
20
|
+
".wasm",
|
21
|
+
".mjs",
|
22
|
+
".js",
|
23
|
+
".json"
|
24
|
+
];
|
25
|
+
}
|
26
|
+
|
27
|
+
apply(normalModuleFactory) {
|
28
|
+
const scope = this.options.scope;
|
29
|
+
if (scope) {
|
30
|
+
normalModuleFactory.hooks.factory.tap(
|
31
|
+
"DelegatedModuleFactoryPlugin",
|
32
|
+
factory => (data, callback) => {
|
33
|
+
const dependency = data.dependencies[0];
|
34
|
+
const request = dependency.request;
|
35
|
+
if (request && request.indexOf(scope + "/") === 0) {
|
36
|
+
const innerRequest = "." + request.substr(scope.length);
|
37
|
+
let resolved;
|
38
|
+
if (innerRequest in this.options.content) {
|
39
|
+
resolved = this.options.content[innerRequest];
|
40
|
+
return callback(
|
41
|
+
null,
|
42
|
+
new DelegatedModule(
|
43
|
+
this.options.source,
|
44
|
+
resolved,
|
45
|
+
this.options.type,
|
46
|
+
innerRequest,
|
47
|
+
request
|
48
|
+
)
|
49
|
+
);
|
50
|
+
}
|
51
|
+
for (let i = 0; i < this.options.extensions.length; i++) {
|
52
|
+
const extension = this.options.extensions[i];
|
53
|
+
const requestPlusExt = innerRequest + extension;
|
54
|
+
if (requestPlusExt in this.options.content) {
|
55
|
+
resolved = this.options.content[requestPlusExt];
|
56
|
+
return callback(
|
57
|
+
null,
|
58
|
+
new DelegatedModule(
|
59
|
+
this.options.source,
|
60
|
+
resolved,
|
61
|
+
this.options.type,
|
62
|
+
requestPlusExt,
|
63
|
+
request + extension
|
64
|
+
)
|
65
|
+
);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}
|
69
|
+
return factory(data, callback);
|
70
|
+
}
|
71
|
+
);
|
72
|
+
} else {
|
73
|
+
normalModuleFactory.hooks.module.tap(
|
74
|
+
"DelegatedModuleFactoryPlugin",
|
75
|
+
module => {
|
76
|
+
if (module.libIdent) {
|
77
|
+
const request = module.libIdent(this.options);
|
78
|
+
if (request && request in this.options.content) {
|
79
|
+
const resolved = this.options.content[request];
|
80
|
+
return new DelegatedModule(
|
81
|
+
this.options.source,
|
82
|
+
resolved,
|
83
|
+
this.options.type,
|
84
|
+
request,
|
85
|
+
module
|
86
|
+
);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
return module;
|
90
|
+
}
|
91
|
+
);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
module.exports = DelegatedModuleFactoryPlugin;
|
package/lib/DelegatedPlugin.js
CHANGED
@@ -1,39 +1,39 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
|
6
|
-
"use strict";
|
7
|
-
|
8
|
-
const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
|
9
|
-
const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
|
10
|
-
const DelegatedExportsDependency = require("./dependencies/DelegatedExportsDependency");
|
11
|
-
const NullFactory = require("./NullFactory");
|
12
|
-
|
13
|
-
class DelegatedPlugin {
|
14
|
-
constructor(options) {
|
15
|
-
this.options = options;
|
16
|
-
}
|
17
|
-
|
18
|
-
apply(compiler) {
|
19
|
-
compiler.hooks.compilation.tap(
|
20
|
-
"DelegatedPlugin",
|
21
|
-
(compilation, { normalModuleFactory }) => {
|
22
|
-
compilation.dependencyFactories.set(
|
23
|
-
DelegatedSourceDependency,
|
24
|
-
normalModuleFactory
|
25
|
-
);
|
26
|
-
compilation.dependencyFactories.set(
|
27
|
-
DelegatedExportsDependency,
|
28
|
-
new NullFactory()
|
29
|
-
);
|
30
|
-
}
|
31
|
-
);
|
32
|
-
|
33
|
-
compiler.hooks.compile.tap("DelegatedPlugin", ({ normalModuleFactory }) => {
|
34
|
-
new DelegatedModuleFactoryPlugin(this.options).apply(normalModuleFactory);
|
35
|
-
});
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
module.exports = DelegatedPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
|
9
|
+
const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency");
|
10
|
+
const DelegatedExportsDependency = require("./dependencies/DelegatedExportsDependency");
|
11
|
+
const NullFactory = require("./NullFactory");
|
12
|
+
|
13
|
+
class DelegatedPlugin {
|
14
|
+
constructor(options) {
|
15
|
+
this.options = options;
|
16
|
+
}
|
17
|
+
|
18
|
+
apply(compiler) {
|
19
|
+
compiler.hooks.compilation.tap(
|
20
|
+
"DelegatedPlugin",
|
21
|
+
(compilation, { normalModuleFactory }) => {
|
22
|
+
compilation.dependencyFactories.set(
|
23
|
+
DelegatedSourceDependency,
|
24
|
+
normalModuleFactory
|
25
|
+
);
|
26
|
+
compilation.dependencyFactories.set(
|
27
|
+
DelegatedExportsDependency,
|
28
|
+
new NullFactory()
|
29
|
+
);
|
30
|
+
}
|
31
|
+
);
|
32
|
+
|
33
|
+
compiler.hooks.compile.tap("DelegatedPlugin", ({ normalModuleFactory }) => {
|
34
|
+
new DelegatedModuleFactoryPlugin(this.options).apply(normalModuleFactory);
|
35
|
+
});
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
module.exports = DelegatedPlugin;
|
package/lib/DependenciesBlock.js
CHANGED