@depup/webpack 5.110.1-depup.0 → 5.111.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/changes.json +7 -11
- package/lib/APIPlugin.js +26 -11
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/Cache.js +8 -3
- package/lib/CacheFacade.js +1 -1
- package/lib/ChunkGraph.js +20 -18
- package/lib/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/CompatibilityPlugin.js +3 -4
- package/lib/Compilation.js +337 -338
- package/lib/Compiler.js +213 -51
- package/lib/ConcatenationScope.js +25 -35
- package/lib/ConstPlugin.js +16 -132
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/DependencyTemplate.js +2 -1
- package/lib/DotenvPlugin.js +64 -40
- package/lib/ErrorHelpers.js +113 -0
- package/lib/ExportsInfo.js +30 -16
- package/lib/ExternalModule.js +47 -22
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +53 -34
- package/lib/FlagDependencyUsagePlugin.js +17 -15
- package/lib/Generator.js +24 -2
- package/lib/HotModuleReplacementPlugin.js +55 -7
- package/lib/IgnorePlugin.js +1 -1
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/LoaderOptionsPlugin.js +1 -1
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +19 -10
- package/lib/ModuleGraph.js +6 -9
- package/lib/MultiCompiler.js +7 -17
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +148 -70
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +33 -3
- package/lib/RuntimeTemplate.js +1147 -847
- package/lib/SourceMapDevToolPlugin.js +54 -104
- package/lib/TemplatedPathPlugin.js +16 -59
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetBytesGenerator.js +7 -1
- package/lib/asset/AssetGenerator.js +50 -24
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/AssetSourceGenerator.js +7 -1
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/async-modules/AsyncModuleHelpers.js +10 -4
- package/lib/buildChunkGraph.js +11 -15
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +7 -8
- package/lib/cache/PackFileCacheStrategy.js +17 -19
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/config/browserslistTargetHandler.js +17 -4
- package/lib/config/defaults.js +162 -142
- package/lib/config/getClaimedAssetTypes.js +10 -11
- package/lib/config/normalization.js +100 -20
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +54 -115
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +19 -21
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +27 -11
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +92 -15
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +3 -10
- package/lib/css/CssParser.js +162 -31
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +43 -32
- package/lib/css/data.js +3526 -871
- package/lib/css/syntax.js +6455 -1237
- package/lib/debug/ProfilingPlugin.js +7 -4
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +13 -12
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +5 -5
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +32 -9
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
- package/lib/dependencies/ContextElementDependency.js +1 -1
- package/lib/dependencies/CssIcssExportDependency.js +13 -9
- package/lib/dependencies/CssIcssImportDependency.js +3 -6
- package/lib/dependencies/CssUrlDependency.js +3 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +67 -22
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -4
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +10 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +12 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +217 -34
- package/lib/dependencies/HarmonyExportInitFragment.js +110 -23
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +25 -58
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +99 -41
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +198 -25
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +117 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +136 -104
- package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
- package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
- package/lib/dependencies/ImportContextDependency.js +43 -3
- package/lib/dependencies/ImportDependency.js +8 -29
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/ImportMetaGlobHelpers.js +1 -1
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +67 -25
- package/lib/dependencies/ImportParserPlugin.js +25 -15
- package/lib/dependencies/LoaderPlugin.js +26 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RequireHeaderDependency.js +20 -21
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/URLContextDependency.js +1 -1
- package/lib/dependencies/URLDependency.js +6 -5
- package/lib/dependencies/WorkerAndWorkletPlugin.js +16 -21
- package/lib/dependencies/WorkerDependency.js +12 -18
- package/lib/dependencies/WorkletDependency.js +12 -20
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dll/DelegatedModule.js +18 -1
- package/lib/dll/DllReferencePlugin.js +11 -8
- package/lib/dll/LibManifestPlugin.js +1 -1
- package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -0
- package/lib/errors/HookWebpackError.js +3 -2
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/MissingSourceMapsWarning.js +36 -0
- package/lib/errors/ModuleParseError.js +2 -1
- package/lib/errors/UnusedAssetsWarning.js +36 -0
- package/lib/errors/UnusedFederationWarning.js +35 -0
- package/lib/errors/UnusedModulesWarning.js +38 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +21 -5
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +91 -53
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/hmr/LazyCompilationPlugin.js +3 -5
- package/lib/html/HtmlGenerator.js +72 -87
- package/lib/html/HtmlModulesPlugin.js +479 -215
- package/lib/html/HtmlParser.js +110 -147
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +142 -7
- package/lib/html/htmlMinify.js +92 -122
- package/lib/html/syntax.js +2031 -1556
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +49 -3
- package/lib/javascript/ChunkFormatHelpers.js +4 -3
- package/lib/javascript/JavascriptGenerator.js +8 -1
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +76 -80
- package/lib/javascript/JavascriptParser.js +1970 -900
- package/lib/javascript/StartupHelpers.js +27 -3
- package/lib/javascript/data.js +172 -0
- package/lib/javascript/grammar.js +5546 -0
- package/lib/javascript/parser.js +1500 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +9061 -5262
- package/lib/json/JsonGenerator.js +7 -1
- package/lib/library/ModuleLibraryPlugin.js +171 -132
- package/lib/loaders/LoaderRunner.js +170 -14
- package/lib/node/NodeWatchFileSystem.js +3 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -15
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -5
- package/lib/optimize/ConcatenatedModule.js +222 -125
- package/lib/optimize/ConstExportsPlugin.js +50 -34
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
- package/lib/optimize/InlineExports.js +20 -2
- package/lib/optimize/InnerGraphPlugin.js +7 -13
- package/lib/optimize/LimitChunkCountPlugin.js +5 -8
- package/lib/optimize/MangleExportsPlugin.js +13 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +27 -5
- package/lib/optimize/RealContentHashPlugin.js +179 -44
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -28
- package/lib/optimize/SplitChunksPlugin.js +2 -4
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/BroadContextsPlugin.js +1 -1
- package/lib/performance/CacheEffectivenessPlugin.js +7 -7
- package/lib/performance/DuplicateModulesPlugin.js +57 -13
- package/lib/performance/EvalUsagePlugin.js +5 -2
- package/lib/performance/MissingSourceMapsPlugin.js +115 -0
- package/lib/performance/PureAnnotationsPlugin.js +6 -3
- package/lib/performance/SizeLimitsPlugin.js +2 -4
- package/lib/performance/TopLevelThisPlugin.js +5 -4
- package/lib/performance/UnusedAssetsPlugin.js +109 -0
- package/lib/performance/UnusedFederationPlugin.js +147 -0
- package/lib/performance/UnusedModulesPlugin.js +141 -0
- package/lib/performance/UnusedReexportsPlugin.js +1 -55
- package/lib/performance/isOnlyReexported.js +65 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +8 -8
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ResourceHintPlugin.js +29 -35
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +16 -10
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +103 -67
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
- package/lib/runtime/BaseUriRuntimeModule.js +9 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +12 -4
- package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
- package/lib/runtime/GlobalRuntimeModule.js +11 -4
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +313 -222
- package/lib/runtime/NonceRuntimeModule.js +9 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
- package/lib/runtime/PublicPathRuntimeModule.js +9 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
- package/lib/runtime/SystemContextRuntimeModule.js +9 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
- package/lib/schemes/DataUriPlugin.js +3 -6
- package/lib/schemes/HttpUriPlugin.js +22 -5
- package/lib/schemes/VirtualUrlPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +31 -18
- package/lib/serialization/ObjectMiddleware.js +168 -139
- package/lib/sharing/ConsumeSharedPlugin.js +12 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
- package/lib/sharing/ShareRuntimeModule.js +9 -0
- package/lib/sharing/declaredShared.js +47 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +6 -5
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/typescript/TypeScriptPlugin.js +10 -13
- package/lib/url/URLParserPlugin.js +6 -8
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/SourceProcessor.js +115 -99
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/chainedImports.js +3 -4
- package/lib/util/concatenate.js +4 -4
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +2 -3
- package/lib/util/deterministicGrouping.js +8 -13
- package/lib/util/findGraphRoots.js +6 -13
- package/lib/util/fs.js +27 -1
- package/lib/util/globUtils.js +1 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +7 -1
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/semver.js +5 -3
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +7 -12
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +12 -4
- package/lib/wasm-sync/WebAssemblyGenerator.js +6 -1
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -6
- package/lib/web/FetchCompileWasmPlugin.js +4 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +55 -46
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +388 -76
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/ManifestPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/types.d.ts +1795 -608
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const Template = require("../Template");
|
|
9
|
+
|
|
10
|
+
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Wraps an import so its arguments evaluate in source order and the options are
|
|
14
|
+
* checked, rejecting rather than throwing. The last parameter holds them.
|
|
15
|
+
* @param {RuntimeTemplate} runtimeTemplate the runtime template
|
|
16
|
+
* @param {string[]} parameters parameter names, the options one last
|
|
17
|
+
* @param {string} content the import expression to return once the check passes
|
|
18
|
+
* @returns {string} the wrapping function
|
|
19
|
+
*/
|
|
20
|
+
const importOptionsCheck = (runtimeTemplate, parameters, content) => {
|
|
21
|
+
const options = parameters[parameters.length - 1];
|
|
22
|
+
return runtimeTemplate.basicFunction(parameters.join(", "), [
|
|
23
|
+
"try {",
|
|
24
|
+
Template.indent([
|
|
25
|
+
`if (${options} !== undefined) {`,
|
|
26
|
+
Template.indent([
|
|
27
|
+
`if ((typeof ${options} !== "object" && typeof ${options} !== "function") || ${options} === null) throw new TypeError("The second argument to import() must be an object");`,
|
|
28
|
+
`var a = ${options}["with"];`,
|
|
29
|
+
"if (a !== undefined) {",
|
|
30
|
+
Template.indent([
|
|
31
|
+
'if ((typeof a !== "object" && typeof a !== "function") || a === null) throw new TypeError("The \'with\' option must be an object");',
|
|
32
|
+
"for (var k = Object.keys(a), i = 0; i < k.length; i++) {",
|
|
33
|
+
Template.indent([
|
|
34
|
+
'if (typeof a[k[i]] !== "string") throw new TypeError("Import attribute values must be strings");'
|
|
35
|
+
]),
|
|
36
|
+
"}"
|
|
37
|
+
]),
|
|
38
|
+
"}"
|
|
39
|
+
]),
|
|
40
|
+
"}"
|
|
41
|
+
]),
|
|
42
|
+
"} catch (e) { return Promise.reject(e); }",
|
|
43
|
+
`return ${content};`
|
|
44
|
+
]);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
module.exports = importOptionsCheck;
|
|
@@ -242,6 +242,7 @@ class DelegatedModule extends Module {
|
|
|
242
242
|
updateHash(hash, context) {
|
|
243
243
|
hash.update(this.delegationType);
|
|
244
244
|
hash.update(JSON.stringify(this.request));
|
|
245
|
+
hash.update(JSON.stringify(this.delegateData));
|
|
245
246
|
super.updateHash(hash, context);
|
|
246
247
|
}
|
|
247
248
|
|
|
@@ -299,7 +300,23 @@ class DelegatedModule extends Module {
|
|
|
299
300
|
this.delegationType = m.delegationType;
|
|
300
301
|
this.userRequest = m.userRequest;
|
|
301
302
|
this.originalRequest = m.originalRequest;
|
|
302
|
-
|
|
303
|
+
const next = m.delegateData;
|
|
304
|
+
// cleanupForCache clears delegateData; compare surviving build products instead.
|
|
305
|
+
if (this.buildMeta) {
|
|
306
|
+
const nextMeta = { ...next.buildMeta };
|
|
307
|
+
const exportsDependency = this.dependencies[1];
|
|
308
|
+
const builtExports =
|
|
309
|
+
exportsDependency instanceof StaticExportsDependency
|
|
310
|
+
? exportsDependency.exports
|
|
311
|
+
: undefined;
|
|
312
|
+
if (
|
|
313
|
+
JSON.stringify(this.buildMeta) !== JSON.stringify(nextMeta) ||
|
|
314
|
+
JSON.stringify(builtExports) !== JSON.stringify(next.exports || true)
|
|
315
|
+
) {
|
|
316
|
+
this.buildMeta = undefined;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
this.delegateData = next;
|
|
303
320
|
}
|
|
304
321
|
|
|
305
322
|
/**
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const ExternalModuleFactoryPlugin = require("../ExternalModuleFactoryPlugin");
|
|
9
9
|
const DelegatedSourceDependency = require("../dependencies/DelegatedSourceDependency");
|
|
10
10
|
const WebpackError = require("../errors/WebpackError");
|
|
11
|
-
const { makePathsRelative } = require("../util/identifier");
|
|
11
|
+
const { fileUrlToPath, makePathsRelative } = require("../util/identifier");
|
|
12
12
|
const parseJson = require("../util/parseJson");
|
|
13
13
|
const DelegatedModuleFactoryPlugin = require("./DelegatedModuleFactoryPlugin");
|
|
14
14
|
|
|
@@ -72,12 +72,13 @@ class DllReferencePlugin {
|
|
|
72
72
|
if ("manifest" in this.options) {
|
|
73
73
|
const manifest = this.options.manifest;
|
|
74
74
|
if (typeof manifest === "string") {
|
|
75
|
+
const manifestPath = fileUrlToPath(manifest);
|
|
75
76
|
/** @type {InputFileSystem} */
|
|
76
|
-
(compiler.inputFileSystem).readFile(
|
|
77
|
+
(compiler.inputFileSystem).readFile(manifestPath, (err, result) => {
|
|
77
78
|
if (err) return callback(err);
|
|
78
79
|
/** @type {CompilationDataItem} */
|
|
79
80
|
const data = {
|
|
80
|
-
path:
|
|
81
|
+
path: manifestPath,
|
|
81
82
|
data: undefined,
|
|
82
83
|
error: undefined
|
|
83
84
|
};
|
|
@@ -93,13 +94,13 @@ class DllReferencePlugin {
|
|
|
93
94
|
} catch (parseErr) {
|
|
94
95
|
// Store the error in the params so that it can
|
|
95
96
|
// be added as a compilation error later on.
|
|
96
|
-
const
|
|
97
|
+
const relativePath = makePathsRelative(
|
|
97
98
|
compiler.context,
|
|
98
|
-
|
|
99
|
+
manifestPath,
|
|
99
100
|
compiler.root
|
|
100
101
|
);
|
|
101
102
|
data.error = new DllManifestError(
|
|
102
|
-
|
|
103
|
+
relativePath,
|
|
103
104
|
/** @type {Error} */ (parseErr).message
|
|
104
105
|
);
|
|
105
106
|
}
|
|
@@ -153,7 +154,9 @@ class DllReferencePlugin {
|
|
|
153
154
|
source,
|
|
154
155
|
type: this.options.type,
|
|
155
156
|
scope: this.options.scope,
|
|
156
|
-
context: this.options.context
|
|
157
|
+
context: this.options.context
|
|
158
|
+
? fileUrlToPath(this.options.context)
|
|
159
|
+
: compiler.context,
|
|
157
160
|
content:
|
|
158
161
|
/** @type {DllReferencePluginOptionsContent} */
|
|
159
162
|
(resolvedContent),
|
|
@@ -176,7 +179,7 @@ class DllReferencePlugin {
|
|
|
176
179
|
/** @type {DllManifestError} */ (data.error)
|
|
177
180
|
);
|
|
178
181
|
}
|
|
179
|
-
compilation.fileDependencies.add(manifest);
|
|
182
|
+
compilation.fileDependencies.add(fileUrlToPath(manifest));
|
|
180
183
|
}
|
|
181
184
|
}
|
|
182
185
|
});
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const asyncLib = require("neo-async");
|
|
9
8
|
const EntryDependency = require("../dependencies/EntryDependency");
|
|
10
9
|
const { someInIterable } = require("../util/IterableHelpers");
|
|
10
|
+
const asyncLib = require("../util/async");
|
|
11
11
|
const { compareModulesById } = require("../util/comparators");
|
|
12
12
|
const { dirname, mkdirp } = require("../util/fs");
|
|
13
13
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {object} BailoutDetails
|
|
12
|
+
* @property {string} reason what keeps the runtime form, as the code generation recorded it
|
|
13
|
+
* @property {string[]} modules the modules it was recorded on, as many as are printed
|
|
14
|
+
* @property {number} count how many modules it was recorded on in all
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class AnalyzableBailoutsWarning extends WebpackError {
|
|
18
|
+
/**
|
|
19
|
+
* Creates an instance of AnalyzableBailoutsWarning.
|
|
20
|
+
* @param {BailoutDetails[]} bailouts the reasons found, the most frequent first
|
|
21
|
+
* @param {number} references how many module and reason pairs there are
|
|
22
|
+
*/
|
|
23
|
+
constructor(bailouts, references) {
|
|
24
|
+
const list = bailouts
|
|
25
|
+
.map((it) => {
|
|
26
|
+
const more = it.count - it.modules.length;
|
|
27
|
+
const names = `${it.modules.join(", ")}${more > 0 ? `, and ${more} more` : ""}`;
|
|
28
|
+
return `\n ${it.reason}\n ${names}`;
|
|
29
|
+
})
|
|
30
|
+
.join("");
|
|
31
|
+
|
|
32
|
+
super(
|
|
33
|
+
`analyzable ESM output: ${references} ${references === 1 ? "reference keeps" : "references keep"} the runtime form:${list}\nA bundler reading this output cannot follow such a reference without running webpack's runtime. Each reason names the setting that keeps it; changing that setting lets the reference be written as a literal import() or new URL().\nFor more info visit https://webpack.js.org/configuration/output/#outputmodule`
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
/** @type {string} */
|
|
37
|
+
this.name = "AnalyzableBailoutsWarning";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = AnalyzableBailoutsWarning;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Error for a dotenv file that exists but could not be read. An absent file is
|
|
12
|
+
* normal and reported through `missingDependencies` instead.
|
|
13
|
+
*/
|
|
14
|
+
class DotenvFileError extends WebpackError {
|
|
15
|
+
/**
|
|
16
|
+
* @param {string} file path of the dotenv file
|
|
17
|
+
* @param {Error} error underlying file system error
|
|
18
|
+
*/
|
|
19
|
+
constructor(file, error) {
|
|
20
|
+
super(`Unable to read the dotenv file ${file}\n${error.message}`);
|
|
21
|
+
|
|
22
|
+
this.name = "DotenvFileError";
|
|
23
|
+
/** @type {string} */
|
|
24
|
+
this.file = file;
|
|
25
|
+
this.error = error;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = DotenvFileError;
|
|
@@ -12,6 +12,7 @@ const WebpackError = require("./WebpackError");
|
|
|
12
12
|
* @typedef {object} DuplicateModuleDetails
|
|
13
13
|
* @property {string} name
|
|
14
14
|
* @property {number} chunks how many chunks carry a copy
|
|
15
|
+
* @property {string[]} entrypoints the entrypoints those chunks belong to, when more than one
|
|
15
16
|
* @property {number} wasted bytes the extra copies cost
|
|
16
17
|
*/
|
|
17
18
|
|
|
@@ -23,18 +24,22 @@ class DuplicateModulesWarning extends WebpackError {
|
|
|
23
24
|
*/
|
|
24
25
|
constructor(modules, wasted) {
|
|
25
26
|
const list = modules
|
|
26
|
-
.map(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
.map((module) => {
|
|
28
|
+
// Which entrypoints pay for it is the actionable part, so it leads
|
|
29
|
+
// where the copies are spread across more than one.
|
|
30
|
+
const where =
|
|
31
|
+
module.entrypoints.length > 1
|
|
32
|
+
? `in ${module.entrypoints.join(", ")}, ${module.chunks} chunks`
|
|
33
|
+
: `in ${module.chunks} chunks`;
|
|
34
|
+
|
|
35
|
+
return `\n ${module.name} (${where}, ${formatSize(module.wasted)} extra)`;
|
|
36
|
+
})
|
|
32
37
|
.join("");
|
|
33
38
|
|
|
34
39
|
super(
|
|
35
40
|
`duplicate modules: copies of the same module across chunks add ${formatSize(
|
|
36
41
|
wasted
|
|
37
|
-
)}:${list}\nA module reached from several chunks is emitted into each of them unless a shared chunk holds it. 'optimization.splitChunks' can pull it into one.\nFor more info visit https://webpack.js.org/plugins/split-chunks-plugin/`
|
|
42
|
+
)}:${list}\nA module reached from several chunks is emitted into each of them unless a shared chunk holds it. 'optimization.splitChunks' can pull it into one, with 'chunks: "all"' where the copies are in different entrypoints.\nFor more info visit https://webpack.js.org/plugins/split-chunks-plugin/`
|
|
38
43
|
);
|
|
39
44
|
|
|
40
45
|
/** @type {string} */
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
class EmptyCopyPatternWarning extends WebpackError {
|
|
11
|
+
/**
|
|
12
|
+
* Creates an instance of EmptyCopyPatternWarning.
|
|
13
|
+
* @param {string} from the `from` of the pattern as written in the configuration
|
|
14
|
+
* @param {string} glob the glob `from` was resolved to
|
|
15
|
+
*/
|
|
16
|
+
constructor(from, glob) {
|
|
17
|
+
super(
|
|
18
|
+
`The '${from}' pattern of 'output.copy' copied no file.\nIt resolved to '${glob}', which matches nothing on disk — usually a typo, a path relative to the wrong directory, or a directory a previous build step was supposed to create.\nSilence it with 'ignoreWarnings' when the pattern is optional.`
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
/** @type {string} */
|
|
22
|
+
this.name = "EmptyCopyPatternWarning";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = EmptyCopyPatternWarning;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
/** @import ExternalModule from "../ExternalModule" */
|
|
11
|
+
/** @import Module from "../Module" */
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Error raised when a `module` library reexports everything from an external
|
|
15
|
+
* whose request names a property path instead of a module.
|
|
16
|
+
*/
|
|
17
|
+
class ExternalStarReexportError extends WebpackError {
|
|
18
|
+
/**
|
|
19
|
+
* Captures the external and the library entry reexporting from it.
|
|
20
|
+
* @param {ExternalModule} externalModule the reexported external
|
|
21
|
+
* @param {Module} module the library entry module
|
|
22
|
+
*/
|
|
23
|
+
constructor(externalModule, module) {
|
|
24
|
+
const request = /** @type {string[]} */ (
|
|
25
|
+
externalModule.getResolvedRequest()
|
|
26
|
+
);
|
|
27
|
+
super(
|
|
28
|
+
`Can't 'export * from ${JSON.stringify(
|
|
29
|
+
externalModule.userRequest
|
|
30
|
+
)}': the external is configured as ${JSON.stringify(
|
|
31
|
+
request
|
|
32
|
+
)}, which is a property of ${JSON.stringify(
|
|
33
|
+
request[0]
|
|
34
|
+
)} and has no module specifier to reexport. Reexport the names explicitly or configure the external without a property path.`
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
/** @type {string} */
|
|
38
|
+
this.name = "ExternalStarReexportError";
|
|
39
|
+
/** @type {Module} */
|
|
40
|
+
this.module = module;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
module.exports = ExternalStarReexportError;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const { toError } = require("../ErrorHelpers");
|
|
8
9
|
const makeSerializable = require("../util/makeSerializable");
|
|
9
10
|
const WebpackError = require("./WebpackError");
|
|
10
11
|
|
|
@@ -67,13 +68,13 @@ makeSerializable(HookWebpackError, "webpack/lib/errors/HookWebpackError");
|
|
|
67
68
|
|
|
68
69
|
/**
|
|
69
70
|
* Creates webpack error.
|
|
70
|
-
* @param {
|
|
71
|
+
* @param {EXPECTED_ANY} error what a plugin failed with
|
|
71
72
|
* @param {string} hook name of the hook
|
|
72
73
|
* @returns {WebpackError} a webpack error
|
|
73
74
|
*/
|
|
74
75
|
const makeWebpackError = (error, hook) => {
|
|
75
76
|
if (error instanceof WebpackError) return error;
|
|
76
|
-
return new HookWebpackError(error, hook);
|
|
77
|
+
return new HookWebpackError(toError(error), hook);
|
|
77
78
|
};
|
|
78
79
|
|
|
79
80
|
HookWebpackError.makeWebpackError = makeWebpackError;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
9
|
+
const WebpackError = require("./WebpackError");
|
|
10
|
+
|
|
11
|
+
class ImportedBindingAssignmentError extends WebpackError {
|
|
12
|
+
/**
|
|
13
|
+
* Creates an instance of ImportedBindingAssignmentError.
|
|
14
|
+
* @param {string} name the local name of the namespace binding
|
|
15
|
+
*/
|
|
16
|
+
constructor(name) {
|
|
17
|
+
super(
|
|
18
|
+
`Assignment to the imported binding '${name}'. A namespace import is immutable, so this throws a TypeError where the module is a real ES module.`
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
this.name = "ImportedBindingAssignmentError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
makeSerializable(
|
|
26
|
+
ImportedBindingAssignmentError,
|
|
27
|
+
"webpack/lib/errors/ImportedBindingAssignmentError"
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
module.exports = ImportedBindingAssignmentError;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {object} MissingSourceMapDetails
|
|
12
|
+
* @property {string} name the module, by request
|
|
13
|
+
* @property {string[]} loaders the loaders that ran on it
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
class MissingSourceMapsWarning extends WebpackError {
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of MissingSourceMapsWarning.
|
|
19
|
+
* @param {MissingSourceMapDetails[]} modules the modules whose map was lost
|
|
20
|
+
* @param {number} total how many such modules there are
|
|
21
|
+
*/
|
|
22
|
+
constructor(modules, total) {
|
|
23
|
+
const list = modules
|
|
24
|
+
.map((it) => `\n ${it.name} (${it.loaders.join(", ")})`)
|
|
25
|
+
.join("");
|
|
26
|
+
|
|
27
|
+
super(
|
|
28
|
+
`missing source maps: ${total} ${total === 1 ? "module was" : "modules were"} transformed by a loader that returned no source map:${list}\nA loader that rewrites code without returning a map leaves webpack mapping positions to the loader's output as though it were the file on disk, so every line the map names below that point is likely to be wrong. Have the loader pass its map to 'this.callback(null, code, map)', or take the loader out of the chain for this build.\nFor more info visit https://webpack.js.org/api/loaders/#thiscallback`
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
/** @type {string} */
|
|
32
|
+
this.name = "MissingSourceMapsWarning";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
module.exports = MissingSourceMapsWarning;
|
|
@@ -101,7 +101,8 @@ class ModuleParseError extends WebpackError {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
// a plain copy: a parser's own position class must not reach the cache
|
|
105
|
+
loc = { start: { line: lineNumber, column: err.loc.column } };
|
|
105
106
|
} else if (err && err.stack) {
|
|
106
107
|
message += `\n${err.stack}`;
|
|
107
108
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {object} UnusedAssetDetails
|
|
12
|
+
* @property {string} name the module, by request
|
|
13
|
+
* @property {number} size the bytes its file adds to the output
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
class UnusedAssetsWarning extends WebpackError {
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of UnusedAssetsWarning.
|
|
19
|
+
* @param {UnusedAssetDetails[]} assets the assets nothing reads
|
|
20
|
+
* @param {number} total the bytes they add between them
|
|
21
|
+
*/
|
|
22
|
+
constructor(assets, total) {
|
|
23
|
+
const list = assets
|
|
24
|
+
.map((it) => `\n ${it.name} (${it.size} bytes)`)
|
|
25
|
+
.join("");
|
|
26
|
+
|
|
27
|
+
super(
|
|
28
|
+
`unused assets: ${total} bytes are emitted for ${assets.length === 1 ? "an import whose binding" : "imports whose bindings"} nothing reads:${list}\nThe import brings the file into the output but its value is never used, so the bytes ship for nothing. Drop the import, or write it as 'import "./file"' with no binding where the file is wanted on disk regardless — 'experiments.futureDefaults' already leaves those alone and drops these.\nFor more info visit https://webpack.js.org/guides/asset-modules/`
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
/** @type {string} */
|
|
32
|
+
this.name = "UnusedAssetsWarning";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
module.exports = UnusedAssetsWarning;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {object} UnusedFederationDetails
|
|
12
|
+
* @property {string} name the share key or remote name, as declared
|
|
13
|
+
* @property {"shared" | "remote"} kind which list declared it
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
class UnusedFederationWarning extends WebpackError {
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of UnusedFederationWarning.
|
|
19
|
+
* @param {UnusedFederationDetails[]} entries the entries nothing used
|
|
20
|
+
*/
|
|
21
|
+
constructor(entries) {
|
|
22
|
+
const list = entries
|
|
23
|
+
.map((entry) => `\n ${entry.name} (${entry.kind})`)
|
|
24
|
+
.join("");
|
|
25
|
+
|
|
26
|
+
super(
|
|
27
|
+
`unused federation config: ${entries.length} ${entries.length === 1 ? "entry was" : "entries were"} declared but never used:${list}\nA 'shared' key nothing imports is not shared at all — each side keeps its own copy, which for a package holding state breaks at runtime rather than only costing bytes. A 'remotes' name nothing imports is dead configuration, or names a remote the code spells differently.\nFor more info visit https://webpack.js.org/concepts/module-federation/`
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
/** @type {string} */
|
|
31
|
+
this.name = "UnusedFederationWarning";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
module.exports = UnusedFederationWarning;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const WebpackError = require("./WebpackError");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @typedef {object} UnusedModuleDetails
|
|
12
|
+
* @property {string} name the module, by request
|
|
13
|
+
* @property {number} size the bytes it adds to the bundle
|
|
14
|
+
* @property {string} statement the statement that kept it, as `type at location`
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
class UnusedModulesWarning extends WebpackError {
|
|
18
|
+
/**
|
|
19
|
+
* Creates an instance of UnusedModulesWarning.
|
|
20
|
+
* @param {UnusedModuleDetails[]} modules the modules nothing uses
|
|
21
|
+
* @param {number} total how many such modules there are
|
|
22
|
+
* @param {number} size the bytes they add between them
|
|
23
|
+
*/
|
|
24
|
+
constructor(modules, total, size) {
|
|
25
|
+
const list = modules
|
|
26
|
+
.map((it) => `\n ${it.name} (${it.size} bytes) — ${it.statement}`)
|
|
27
|
+
.join("");
|
|
28
|
+
|
|
29
|
+
super(
|
|
30
|
+
`unused modules: ${total} ${total === 1 ? "module is" : "modules are"} bundled although nothing uses what they export, costing ${size} bytes:${list}\nEach is kept only by the statement named above, which runs for its effect rather than for anything the importer reads. Move that effect to where it is wanted, or drop the import — 'sideEffects' in the package's package.json says so for a whole package at once.\nFor more info visit https://webpack.js.org/guides/tree-shaking/#mark-the-file-as-side-effect-free`
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
/** @type {string} */
|
|
34
|
+
this.name = "UnusedModulesWarning";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
module.exports = UnusedModulesWarning;
|
|
@@ -22,6 +22,15 @@ class ExportWebpackRequireRuntimeModule extends RuntimeModule {
|
|
|
22
22
|
return false;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
27
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
28
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
29
|
+
*/
|
|
30
|
+
getInstalledChunkHandlers() {
|
|
31
|
+
return RuntimeModule.NO_CHUNK_HANDLERS;
|
|
32
|
+
}
|
|
33
|
+
|
|
25
34
|
/**
|
|
26
35
|
* Generates runtime code for this runtime module.
|
|
27
36
|
* @returns {string | null} runtime code
|
|
@@ -19,7 +19,10 @@ const {
|
|
|
19
19
|
getChunkFilenameTemplate,
|
|
20
20
|
getCompilationHooks
|
|
21
21
|
} = require("../javascript/JavascriptModulesPlugin");
|
|
22
|
-
const {
|
|
22
|
+
const {
|
|
23
|
+
entryModuleIdExpression,
|
|
24
|
+
renderAwaitedEntries
|
|
25
|
+
} = require("../javascript/StartupHelpers");
|
|
23
26
|
const { getUndoPath } = require("../util/identifier");
|
|
24
27
|
|
|
25
28
|
/** @import { Source } from "webpack-sources" */
|
|
@@ -186,7 +189,8 @@ class ModuleChunkFormatPlugin {
|
|
|
186
189
|
}
|
|
187
190
|
);
|
|
188
191
|
hooks.renderChunk.tap(PLUGIN_NAME, (modules, renderContext) => {
|
|
189
|
-
const { chunk, chunkGraph, runtimeTemplate } =
|
|
192
|
+
const { chunk, chunkGraph, moduleGraph, runtimeTemplate } =
|
|
193
|
+
renderContext;
|
|
190
194
|
const hotUpdateChunk = chunk instanceof HotUpdateChunk ? chunk : null;
|
|
191
195
|
const source = new ConcatSource();
|
|
192
196
|
const cst = runtimeTemplate.renderConst();
|
|
@@ -239,6 +243,17 @@ class ModuleChunkFormatPlugin {
|
|
|
239
243
|
);
|
|
240
244
|
}
|
|
241
245
|
|
|
246
|
+
const entryOptions = chunk.getEntryOptions();
|
|
247
|
+
const library =
|
|
248
|
+
entryOptions && entryOptions.library !== undefined
|
|
249
|
+
? entryOptions.library
|
|
250
|
+
: runtimeTemplate.outputOptions.library;
|
|
251
|
+
// A module library awaits the entry itself, in `ModuleLibraryPlugin`.
|
|
252
|
+
const canAwaitEntry =
|
|
253
|
+
runtimeTemplate.supportsTopLevelAwait() &&
|
|
254
|
+
!(library !== undefined && library.type === "module");
|
|
255
|
+
/** @type {string[]} */
|
|
256
|
+
const awaitedEntries = [];
|
|
242
257
|
/** @type {Set<Chunk>} */
|
|
243
258
|
const loadedChunks = new Set();
|
|
244
259
|
let ownInstalled = false;
|
|
@@ -296,13 +311,23 @@ class ModuleChunkFormatPlugin {
|
|
|
296
311
|
startupSource.add(inlinedEntrySource);
|
|
297
312
|
startupSource.add("\n");
|
|
298
313
|
} else {
|
|
314
|
+
// An async entry nobody awaits settles after the bundle did,
|
|
315
|
+
// which orphans its rejection.
|
|
316
|
+
const awaitEntry = canAwaitEntry && moduleGraph.isAsync(module);
|
|
317
|
+
const target = final
|
|
318
|
+
? RuntimeGlobals.exports
|
|
319
|
+
: `${RuntimeGlobals.exports}_${i}`;
|
|
299
320
|
startupSource.add(
|
|
300
321
|
`${
|
|
301
|
-
final ? `var ${
|
|
322
|
+
final || awaitEntry ? `var ${target} = ` : ""
|
|
302
323
|
}__webpack_exec__(${JSON.stringify(moduleId)});\n`
|
|
303
324
|
);
|
|
325
|
+
if (awaitEntry) awaitedEntries.push(target);
|
|
304
326
|
}
|
|
305
327
|
}
|
|
328
|
+
for (const line of renderAwaitedEntries(awaitedEntries)) {
|
|
329
|
+
startupSource.add(`${line}\n`);
|
|
330
|
+
}
|
|
306
331
|
|
|
307
332
|
entrySource.add(
|
|
308
333
|
hooks.renderStartup.call(
|