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,59 +1,59 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const Template = require("../Template");
|
8
|
-
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
|
9
|
-
|
10
|
-
/** @typedef {import("../Module")} Module */
|
11
|
-
|
12
|
-
/** @typedef {Object} UsedWasmDependency
|
13
|
-
* @property {WebAssemblyImportDependency} dependency the dependency
|
14
|
-
* @property {string} name the export name
|
15
|
-
* @property {string} module the module name
|
16
|
-
*/
|
17
|
-
|
18
|
-
const MANGLED_MODULE = "a";
|
19
|
-
|
20
|
-
/**
|
21
|
-
* @param {Module} module the module
|
22
|
-
* @param {boolean} mangle mangle module and export names
|
23
|
-
* @returns {UsedWasmDependency[]} used dependencies and (mangled) name
|
24
|
-
*/
|
25
|
-
const getUsedDependencies = (module, mangle) => {
|
26
|
-
/** @type {UsedWasmDependency[]} */
|
27
|
-
const array = [];
|
28
|
-
let importIndex = 0;
|
29
|
-
for (const dep of module.dependencies) {
|
30
|
-
if (dep instanceof WebAssemblyImportDependency) {
|
31
|
-
if (dep.description.type === "GlobalType" || dep.module === null) {
|
32
|
-
continue;
|
33
|
-
}
|
34
|
-
|
35
|
-
const exportName = dep.name;
|
36
|
-
// TODO add the following 3 lines when removing of ModuleExport is possible
|
37
|
-
// const importedModule = dep.module;
|
38
|
-
// const usedName = importedModule && importedModule.isUsed(exportName);
|
39
|
-
// if (usedName !== false) {
|
40
|
-
if (mangle) {
|
41
|
-
array.push({
|
42
|
-
dependency: dep,
|
43
|
-
name: Template.numberToIdentifer(importIndex++),
|
44
|
-
module: MANGLED_MODULE
|
45
|
-
});
|
46
|
-
} else {
|
47
|
-
array.push({
|
48
|
-
dependency: dep,
|
49
|
-
name: exportName,
|
50
|
-
module: dep.request
|
51
|
-
});
|
52
|
-
}
|
53
|
-
}
|
54
|
-
}
|
55
|
-
return array;
|
56
|
-
};
|
57
|
-
|
58
|
-
exports.getUsedDependencies = getUsedDependencies;
|
59
|
-
exports.MANGLED_MODULE = MANGLED_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 Template = require("../Template");
|
8
|
+
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
|
9
|
+
|
10
|
+
/** @typedef {import("../Module")} Module */
|
11
|
+
|
12
|
+
/** @typedef {Object} UsedWasmDependency
|
13
|
+
* @property {WebAssemblyImportDependency} dependency the dependency
|
14
|
+
* @property {string} name the export name
|
15
|
+
* @property {string} module the module name
|
16
|
+
*/
|
17
|
+
|
18
|
+
const MANGLED_MODULE = "a";
|
19
|
+
|
20
|
+
/**
|
21
|
+
* @param {Module} module the module
|
22
|
+
* @param {boolean} mangle mangle module and export names
|
23
|
+
* @returns {UsedWasmDependency[]} used dependencies and (mangled) name
|
24
|
+
*/
|
25
|
+
const getUsedDependencies = (module, mangle) => {
|
26
|
+
/** @type {UsedWasmDependency[]} */
|
27
|
+
const array = [];
|
28
|
+
let importIndex = 0;
|
29
|
+
for (const dep of module.dependencies) {
|
30
|
+
if (dep instanceof WebAssemblyImportDependency) {
|
31
|
+
if (dep.description.type === "GlobalType" || dep.module === null) {
|
32
|
+
continue;
|
33
|
+
}
|
34
|
+
|
35
|
+
const exportName = dep.name;
|
36
|
+
// TODO add the following 3 lines when removing of ModuleExport is possible
|
37
|
+
// const importedModule = dep.module;
|
38
|
+
// const usedName = importedModule && importedModule.isUsed(exportName);
|
39
|
+
// if (usedName !== false) {
|
40
|
+
if (mangle) {
|
41
|
+
array.push({
|
42
|
+
dependency: dep,
|
43
|
+
name: Template.numberToIdentifer(importIndex++),
|
44
|
+
module: MANGLED_MODULE
|
45
|
+
});
|
46
|
+
} else {
|
47
|
+
array.push({
|
48
|
+
dependency: dep,
|
49
|
+
name: exportName,
|
50
|
+
module: dep.request
|
51
|
+
});
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
return array;
|
56
|
+
};
|
57
|
+
|
58
|
+
exports.getUsedDependencies = getUsedDependencies;
|
59
|
+
exports.MANGLED_MODULE = MANGLED_MODULE;
|
@@ -1,37 +1,37 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const WasmMainTemplatePlugin = require("../wasm/WasmMainTemplatePlugin");
|
8
|
-
|
9
|
-
class FetchCompileWasmTemplatePlugin {
|
10
|
-
constructor(options) {
|
11
|
-
this.options = options || {};
|
12
|
-
}
|
13
|
-
|
14
|
-
apply(compiler) {
|
15
|
-
compiler.hooks.thisCompilation.tap(
|
16
|
-
"FetchCompileWasmTemplatePlugin",
|
17
|
-
compilation => {
|
18
|
-
const mainTemplate = compilation.mainTemplate;
|
19
|
-
const generateLoadBinaryCode = path =>
|
20
|
-
`fetch(${mainTemplate.requireFn}.p + ${path})`;
|
21
|
-
|
22
|
-
const plugin = new WasmMainTemplatePlugin(
|
23
|
-
Object.assign(
|
24
|
-
{
|
25
|
-
generateLoadBinaryCode,
|
26
|
-
supportsStreaming: true
|
27
|
-
},
|
28
|
-
this.options
|
29
|
-
)
|
30
|
-
);
|
31
|
-
plugin.apply(mainTemplate);
|
32
|
-
}
|
33
|
-
);
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
module.exports = FetchCompileWasmTemplatePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const WasmMainTemplatePlugin = require("../wasm/WasmMainTemplatePlugin");
|
8
|
+
|
9
|
+
class FetchCompileWasmTemplatePlugin {
|
10
|
+
constructor(options) {
|
11
|
+
this.options = options || {};
|
12
|
+
}
|
13
|
+
|
14
|
+
apply(compiler) {
|
15
|
+
compiler.hooks.thisCompilation.tap(
|
16
|
+
"FetchCompileWasmTemplatePlugin",
|
17
|
+
compilation => {
|
18
|
+
const mainTemplate = compilation.mainTemplate;
|
19
|
+
const generateLoadBinaryCode = path =>
|
20
|
+
`fetch(${mainTemplate.requireFn}.p + ${path})`;
|
21
|
+
|
22
|
+
const plugin = new WasmMainTemplatePlugin(
|
23
|
+
Object.assign(
|
24
|
+
{
|
25
|
+
generateLoadBinaryCode,
|
26
|
+
supportsStreaming: true
|
27
|
+
},
|
28
|
+
this.options
|
29
|
+
)
|
30
|
+
);
|
31
|
+
plugin.apply(mainTemplate);
|
32
|
+
}
|
33
|
+
);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
module.exports = FetchCompileWasmTemplatePlugin;
|
@@ -1,47 +1,47 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const { ConcatSource } = require("webpack-sources");
|
8
|
-
|
9
|
-
class JsonpExportMainTemplatePlugin {
|
10
|
-
constructor(name) {
|
11
|
-
this.name = name;
|
12
|
-
}
|
13
|
-
|
14
|
-
apply(compilation) {
|
15
|
-
const { mainTemplate, chunkTemplate } = compilation;
|
16
|
-
|
17
|
-
const onRenderWithEntry = (source, chunk, hash) => {
|
18
|
-
const name = mainTemplate.getAssetPath(this.name || "", {
|
19
|
-
hash,
|
20
|
-
chunk
|
21
|
-
});
|
22
|
-
return new ConcatSource(`${name}(`, source, ");");
|
23
|
-
};
|
24
|
-
|
25
|
-
for (const template of [mainTemplate, chunkTemplate]) {
|
26
|
-
template.hooks.renderWithEntry.tap(
|
27
|
-
"JsonpExportMainTemplatePlugin",
|
28
|
-
onRenderWithEntry
|
29
|
-
);
|
30
|
-
}
|
31
|
-
|
32
|
-
mainTemplate.hooks.globalHashPaths.tap(
|
33
|
-
"JsonpExportMainTemplatePlugin",
|
34
|
-
paths => {
|
35
|
-
if (this.name) paths.push(this.name);
|
36
|
-
return paths;
|
37
|
-
}
|
38
|
-
);
|
39
|
-
|
40
|
-
mainTemplate.hooks.hash.tap("JsonpExportMainTemplatePlugin", hash => {
|
41
|
-
hash.update("jsonp export");
|
42
|
-
hash.update(`${this.name}`);
|
43
|
-
});
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
module.exports = JsonpExportMainTemplatePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const { ConcatSource } = require("webpack-sources");
|
8
|
+
|
9
|
+
class JsonpExportMainTemplatePlugin {
|
10
|
+
constructor(name) {
|
11
|
+
this.name = name;
|
12
|
+
}
|
13
|
+
|
14
|
+
apply(compilation) {
|
15
|
+
const { mainTemplate, chunkTemplate } = compilation;
|
16
|
+
|
17
|
+
const onRenderWithEntry = (source, chunk, hash) => {
|
18
|
+
const name = mainTemplate.getAssetPath(this.name || "", {
|
19
|
+
hash,
|
20
|
+
chunk
|
21
|
+
});
|
22
|
+
return new ConcatSource(`${name}(`, source, ");");
|
23
|
+
};
|
24
|
+
|
25
|
+
for (const template of [mainTemplate, chunkTemplate]) {
|
26
|
+
template.hooks.renderWithEntry.tap(
|
27
|
+
"JsonpExportMainTemplatePlugin",
|
28
|
+
onRenderWithEntry
|
29
|
+
);
|
30
|
+
}
|
31
|
+
|
32
|
+
mainTemplate.hooks.globalHashPaths.tap(
|
33
|
+
"JsonpExportMainTemplatePlugin",
|
34
|
+
paths => {
|
35
|
+
if (this.name) paths.push(this.name);
|
36
|
+
return paths;
|
37
|
+
}
|
38
|
+
);
|
39
|
+
|
40
|
+
mainTemplate.hooks.hash.tap("JsonpExportMainTemplatePlugin", hash => {
|
41
|
+
hash.update("jsonp export");
|
42
|
+
hash.update(`${this.name}`);
|
43
|
+
});
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
module.exports = JsonpExportMainTemplatePlugin;
|
@@ -1,39 +1,39 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const { ConcatSource } = require("webpack-sources");
|
8
|
-
|
9
|
-
class JsonpHotUpdateChunkTemplatePlugin {
|
10
|
-
apply(hotUpdateChunkTemplate) {
|
11
|
-
hotUpdateChunkTemplate.hooks.render.tap(
|
12
|
-
"JsonpHotUpdateChunkTemplatePlugin",
|
13
|
-
(modulesSource, modules, removedModules, hash, id) => {
|
14
|
-
const source = new ConcatSource();
|
15
|
-
source.add(
|
16
|
-
`${
|
17
|
-
hotUpdateChunkTemplate.outputOptions.hotUpdateFunction
|
18
|
-
}(${JSON.stringify(id)},`
|
19
|
-
);
|
20
|
-
source.add(modulesSource);
|
21
|
-
source.add(")");
|
22
|
-
return source;
|
23
|
-
}
|
24
|
-
);
|
25
|
-
hotUpdateChunkTemplate.hooks.hash.tap(
|
26
|
-
"JsonpHotUpdateChunkTemplatePlugin",
|
27
|
-
hash => {
|
28
|
-
hash.update("JsonpHotUpdateChunkTemplatePlugin");
|
29
|
-
hash.update("3");
|
30
|
-
hash.update(
|
31
|
-
`${hotUpdateChunkTemplate.outputOptions.hotUpdateFunction}`
|
32
|
-
);
|
33
|
-
hash.update(`${hotUpdateChunkTemplate.outputOptions.library}`);
|
34
|
-
}
|
35
|
-
);
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
module.exports = JsonpHotUpdateChunkTemplatePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const { ConcatSource } = require("webpack-sources");
|
8
|
+
|
9
|
+
class JsonpHotUpdateChunkTemplatePlugin {
|
10
|
+
apply(hotUpdateChunkTemplate) {
|
11
|
+
hotUpdateChunkTemplate.hooks.render.tap(
|
12
|
+
"JsonpHotUpdateChunkTemplatePlugin",
|
13
|
+
(modulesSource, modules, removedModules, hash, id) => {
|
14
|
+
const source = new ConcatSource();
|
15
|
+
source.add(
|
16
|
+
`${
|
17
|
+
hotUpdateChunkTemplate.outputOptions.hotUpdateFunction
|
18
|
+
}(${JSON.stringify(id)},`
|
19
|
+
);
|
20
|
+
source.add(modulesSource);
|
21
|
+
source.add(")");
|
22
|
+
return source;
|
23
|
+
}
|
24
|
+
);
|
25
|
+
hotUpdateChunkTemplate.hooks.hash.tap(
|
26
|
+
"JsonpHotUpdateChunkTemplatePlugin",
|
27
|
+
hash => {
|
28
|
+
hash.update("JsonpHotUpdateChunkTemplatePlugin");
|
29
|
+
hash.update("3");
|
30
|
+
hash.update(
|
31
|
+
`${hotUpdateChunkTemplate.outputOptions.hotUpdateFunction}`
|
32
|
+
);
|
33
|
+
hash.update(`${hotUpdateChunkTemplate.outputOptions.library}`);
|
34
|
+
}
|
35
|
+
);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
module.exports = JsonpHotUpdateChunkTemplatePlugin;
|
@@ -1,65 +1,65 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
/*globals hotAddUpdateChunk parentHotUpdateCallback document XMLHttpRequest $require$ $hotChunkFilename$ $hotMainFilename$ $crossOriginLoading$ */
|
6
|
-
module.exports = function() {
|
7
|
-
// eslint-disable-next-line no-unused-vars
|
8
|
-
function webpackHotUpdateCallback(chunkId, moreModules) {
|
9
|
-
hotAddUpdateChunk(chunkId, moreModules);
|
10
|
-
if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
|
11
|
-
} //$semicolon
|
12
|
-
|
13
|
-
// eslint-disable-next-line no-unused-vars
|
14
|
-
function hotDownloadUpdateChunk(chunkId) {
|
15
|
-
var head = document.getElementsByTagName("head")[0];
|
16
|
-
var script = document.createElement("script");
|
17
|
-
script.charset = "utf-8";
|
18
|
-
script.src = $require$.p + $hotChunkFilename$;
|
19
|
-
$crossOriginLoading$;
|
20
|
-
head.appendChild(script);
|
21
|
-
}
|
22
|
-
|
23
|
-
// eslint-disable-next-line no-unused-vars
|
24
|
-
function hotDownloadManifest(requestTimeout) {
|
25
|
-
requestTimeout = requestTimeout || 10000;
|
26
|
-
return new Promise(function(resolve, reject) {
|
27
|
-
if (typeof XMLHttpRequest === "undefined") {
|
28
|
-
return reject(new Error("No browser support"));
|
29
|
-
}
|
30
|
-
try {
|
31
|
-
var request = new XMLHttpRequest();
|
32
|
-
var requestPath = $require$.p + $hotMainFilename$;
|
33
|
-
request.open("GET", requestPath, true);
|
34
|
-
request.timeout = requestTimeout;
|
35
|
-
request.send(null);
|
36
|
-
} catch (err) {
|
37
|
-
return reject(err);
|
38
|
-
}
|
39
|
-
request.onreadystatechange = function() {
|
40
|
-
if (request.readyState !== 4) return;
|
41
|
-
if (request.status === 0) {
|
42
|
-
// timeout
|
43
|
-
reject(
|
44
|
-
new Error("Manifest request to " + requestPath + " timed out.")
|
45
|
-
);
|
46
|
-
} else if (request.status === 404) {
|
47
|
-
// no update available
|
48
|
-
resolve();
|
49
|
-
} else if (request.status !== 200 && request.status !== 304) {
|
50
|
-
// other failure
|
51
|
-
reject(new Error("Manifest request to " + requestPath + " failed."));
|
52
|
-
} else {
|
53
|
-
// success
|
54
|
-
try {
|
55
|
-
var update = JSON.parse(request.responseText);
|
56
|
-
} catch (e) {
|
57
|
-
reject(e);
|
58
|
-
return;
|
59
|
-
}
|
60
|
-
resolve(update);
|
61
|
-
}
|
62
|
-
};
|
63
|
-
});
|
64
|
-
}
|
65
|
-
};
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
/*globals hotAddUpdateChunk parentHotUpdateCallback document XMLHttpRequest $require$ $hotChunkFilename$ $hotMainFilename$ $crossOriginLoading$ */
|
6
|
+
module.exports = function() {
|
7
|
+
// eslint-disable-next-line no-unused-vars
|
8
|
+
function webpackHotUpdateCallback(chunkId, moreModules) {
|
9
|
+
hotAddUpdateChunk(chunkId, moreModules);
|
10
|
+
if (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);
|
11
|
+
} //$semicolon
|
12
|
+
|
13
|
+
// eslint-disable-next-line no-unused-vars
|
14
|
+
function hotDownloadUpdateChunk(chunkId) {
|
15
|
+
var head = document.getElementsByTagName("head")[0];
|
16
|
+
var script = document.createElement("script");
|
17
|
+
script.charset = "utf-8";
|
18
|
+
script.src = $require$.p + $hotChunkFilename$;
|
19
|
+
$crossOriginLoading$;
|
20
|
+
head.appendChild(script);
|
21
|
+
}
|
22
|
+
|
23
|
+
// eslint-disable-next-line no-unused-vars
|
24
|
+
function hotDownloadManifest(requestTimeout) {
|
25
|
+
requestTimeout = requestTimeout || 10000;
|
26
|
+
return new Promise(function(resolve, reject) {
|
27
|
+
if (typeof XMLHttpRequest === "undefined") {
|
28
|
+
return reject(new Error("No browser support"));
|
29
|
+
}
|
30
|
+
try {
|
31
|
+
var request = new XMLHttpRequest();
|
32
|
+
var requestPath = $require$.p + $hotMainFilename$;
|
33
|
+
request.open("GET", requestPath, true);
|
34
|
+
request.timeout = requestTimeout;
|
35
|
+
request.send(null);
|
36
|
+
} catch (err) {
|
37
|
+
return reject(err);
|
38
|
+
}
|
39
|
+
request.onreadystatechange = function() {
|
40
|
+
if (request.readyState !== 4) return;
|
41
|
+
if (request.status === 0) {
|
42
|
+
// timeout
|
43
|
+
reject(
|
44
|
+
new Error("Manifest request to " + requestPath + " timed out.")
|
45
|
+
);
|
46
|
+
} else if (request.status === 404) {
|
47
|
+
// no update available
|
48
|
+
resolve();
|
49
|
+
} else if (request.status !== 200 && request.status !== 304) {
|
50
|
+
// other failure
|
51
|
+
reject(new Error("Manifest request to " + requestPath + " failed."));
|
52
|
+
} else {
|
53
|
+
// success
|
54
|
+
try {
|
55
|
+
var update = JSON.parse(request.responseText);
|
56
|
+
} catch (e) {
|
57
|
+
reject(e);
|
58
|
+
return;
|
59
|
+
}
|
60
|
+
resolve(update);
|
61
|
+
}
|
62
|
+
};
|
63
|
+
});
|
64
|
+
}
|
65
|
+
};
|
@@ -556,7 +556,7 @@ class JsonpMainTemplatePlugin {
|
|
556
556
|
}
|
557
557
|
);
|
558
558
|
const runtimeSource = Template.getFunctionContent(
|
559
|
-
require("./JsonpMainTemplate.runtime
|
559
|
+
require("./JsonpMainTemplate.runtime")
|
560
560
|
)
|
561
561
|
.replace(/\/\/\$semicolon/g, ";")
|
562
562
|
.replace(/\$require\$/g, mainTemplate.requireFn)
|
@@ -1,23 +1,23 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
const JsonpMainTemplatePlugin = require("./JsonpMainTemplatePlugin");
|
8
|
-
const JsonpChunkTemplatePlugin = require("./JsonpChunkTemplatePlugin");
|
9
|
-
const JsonpHotUpdateChunkTemplatePlugin = require("./JsonpHotUpdateChunkTemplatePlugin");
|
10
|
-
|
11
|
-
class JsonpTemplatePlugin {
|
12
|
-
apply(compiler) {
|
13
|
-
compiler.hooks.thisCompilation.tap("JsonpTemplatePlugin", compilation => {
|
14
|
-
new JsonpMainTemplatePlugin().apply(compilation.mainTemplate);
|
15
|
-
new JsonpChunkTemplatePlugin().apply(compilation.chunkTemplate);
|
16
|
-
new JsonpHotUpdateChunkTemplatePlugin().apply(
|
17
|
-
compilation.hotUpdateChunkTemplate
|
18
|
-
);
|
19
|
-
});
|
20
|
-
}
|
21
|
-
}
|
22
|
-
|
23
|
-
module.exports = JsonpTemplatePlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
const JsonpMainTemplatePlugin = require("./JsonpMainTemplatePlugin");
|
8
|
+
const JsonpChunkTemplatePlugin = require("./JsonpChunkTemplatePlugin");
|
9
|
+
const JsonpHotUpdateChunkTemplatePlugin = require("./JsonpHotUpdateChunkTemplatePlugin");
|
10
|
+
|
11
|
+
class JsonpTemplatePlugin {
|
12
|
+
apply(compiler) {
|
13
|
+
compiler.hooks.thisCompilation.tap("JsonpTemplatePlugin", compilation => {
|
14
|
+
new JsonpMainTemplatePlugin().apply(compilation.mainTemplate);
|
15
|
+
new JsonpChunkTemplatePlugin().apply(compilation.chunkTemplate);
|
16
|
+
new JsonpHotUpdateChunkTemplatePlugin().apply(
|
17
|
+
compilation.hotUpdateChunkTemplate
|
18
|
+
);
|
19
|
+
});
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
module.exports = JsonpTemplatePlugin;
|
@@ -1,18 +1,18 @@
|
|
1
|
-
/*
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
-
Author Tobias Koppers @sokra
|
4
|
-
*/
|
5
|
-
"use strict";
|
6
|
-
|
7
|
-
class WebEnvironmentPlugin {
|
8
|
-
constructor(inputFileSystem, outputFileSystem) {
|
9
|
-
this.inputFileSystem = inputFileSystem;
|
10
|
-
this.outputFileSystem = outputFileSystem;
|
11
|
-
}
|
12
|
-
|
13
|
-
apply(compiler) {
|
14
|
-
compiler.outputFileSystem = this.outputFileSystem;
|
15
|
-
}
|
16
|
-
}
|
17
|
-
|
18
|
-
module.exports = WebEnvironmentPlugin;
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Tobias Koppers @sokra
|
4
|
+
*/
|
5
|
+
"use strict";
|
6
|
+
|
7
|
+
class WebEnvironmentPlugin {
|
8
|
+
constructor(inputFileSystem, outputFileSystem) {
|
9
|
+
this.inputFileSystem = inputFileSystem;
|
10
|
+
this.outputFileSystem = outputFileSystem;
|
11
|
+
}
|
12
|
+
|
13
|
+
apply(compiler) {
|
14
|
+
compiler.outputFileSystem = this.outputFileSystem;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
module.exports = WebEnvironmentPlugin;
|
package/lib/webpack.js
CHANGED
@@ -69,6 +69,7 @@ webpack.WebpackOptionsApply = WebpackOptionsApply;
|
|
69
69
|
webpack.Compiler = Compiler;
|
70
70
|
webpack.MultiCompiler = MultiCompiler;
|
71
71
|
webpack.NodeEnvironmentPlugin = NodeEnvironmentPlugin;
|
72
|
+
// @ts-ignore Global @this directive is not supported
|
72
73
|
webpack.validate = validateSchema.bind(this, webpackOptionsSchema);
|
73
74
|
webpack.validateSchema = validateSchema;
|
74
75
|
webpack.WebpackOptionsValidationError = WebpackOptionsValidationError;
|
@@ -137,6 +138,10 @@ exportPlugins((exports.optimize = {}), {
|
|
137
138
|
ModuleConcatenationPlugin: () =>
|
138
139
|
require("./optimize/ModuleConcatenationPlugin"),
|
139
140
|
OccurrenceOrderPlugin: () => require("./optimize/OccurrenceOrderPlugin"),
|
141
|
+
OccurrenceModuleOrderPlugin: () =>
|
142
|
+
require("./optimize/OccurrenceModuleOrderPlugin"),
|
143
|
+
OccurrenceChunkOrderPlugin: () =>
|
144
|
+
require("./optimize/OccurrenceChunkOrderPlugin"),
|
140
145
|
RuntimeChunkPlugin: () => require("./optimize/RuntimeChunkPlugin"),
|
141
146
|
SideEffectsFlagPlugin: () => require("./optimize/SideEffectsFlagPlugin"),
|
142
147
|
SplitChunksPlugin: () => require("./optimize/SplitChunksPlugin")
|