@depup/webpack 5.110.3-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/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/CompatibilityPlugin.js +3 -4
- package/lib/Compilation.js +336 -337
- package/lib/Compiler.js +213 -51
- 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 +24 -28
- package/lib/ErrorHelpers.js +113 -0
- package/lib/ExportsInfo.js +20 -16
- package/lib/ExternalModule.js +47 -22
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +53 -34
- package/lib/FlagDependencyUsagePlugin.js +9 -13
- 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 +135 -50
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +30 -3
- package/lib/RuntimeTemplate.js +813 -518
- 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/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 +138 -128
- package/lib/config/getClaimedAssetTypes.js +10 -11
- package/lib/config/normalization.js +82 -12
- 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 +94 -36
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +7 -6
- 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 +3514 -869
- package/lib/css/syntax.js +6370 -1220
- 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 +14 -5
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -9
- 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/HarmonyExportDependencyParserPlugin.js +10 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +74 -17
- 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 +6 -1
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +111 -17
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +3 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +124 -102
- package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
- package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
- 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 +1 -1
- package/lib/dependencies/LoaderPlugin.js +26 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- 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 +15 -21
- package/lib/dependencies/WorkerDependency.js +7 -7
- package/lib/dependencies/WorkletDependency.js +7 -11
- 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/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/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 +30 -11
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +92 -60
- 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 +418 -200
- 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 +1618 -1391
- 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 +73 -72
- 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 +137 -9
- package/lib/node/NodeWatchFileSystem.js +3 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -5
- package/lib/optimize/ConcatenatedModule.js +178 -120
- package/lib/optimize/ConstExportsPlugin.js +50 -39
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
- package/lib/optimize/InlineExports.js +20 -123
- 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 +68 -9
- 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 +18 -23
- 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 +98 -66
- 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 +305 -224
- 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/VirtualUrlPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +16 -16
- 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 +2 -3
- package/lib/url/URLParserPlugin.js +6 -8
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/SourceProcessor.js +91 -91
- 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/createHooksRegistry.js +1 -2
- 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 +5 -1
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/util/semver.js +5 -3
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
- 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/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 +379 -66
- 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 +1723 -604
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
-
Author Natsu @xiaoxiaojx
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
"use strict";
|
|
7
|
-
|
|
8
|
-
const InitFragment = require("../InitFragment");
|
|
9
|
-
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
|
-
|
|
11
|
-
/** @import { Source } from "webpack-sources" */
|
|
12
|
-
/** @import { GenerateContext } from "../Generator" */
|
|
13
|
-
/** @import { UsedName } from "../ExportsInfo" */
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @typedef {object} ExportBinding
|
|
17
|
-
* @property {UsedName} name the used export name
|
|
18
|
-
* @property {string} value the variable expression
|
|
19
|
-
* @property {"getter" | "value"=} bindingType "value" for value binding, defaults to "getter"
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Offered the rendered `d()` call and where it sits, and answers whether it took it
|
|
24
|
-
* over. A consumer that does emits the call itself where it is actually read — or
|
|
25
|
-
* leaves it out. Value bindings read the declarations above them, so one placed at
|
|
26
|
-
* the end cannot be moved before the module body.
|
|
27
|
-
* @typedef {(source: string, placeAtEnd: boolean) => boolean} OnDemandGeneration
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Init fragment for const export bindings.
|
|
32
|
-
* Generates a flat-array __webpack_require__.d() call.
|
|
33
|
-
* Getter bindings: "key", () => expr (2 items).
|
|
34
|
-
* Value bindings: "key", 0, expr (3 items, 0 is sentinel).
|
|
35
|
-
*
|
|
36
|
-
* Uses a separate key ("harmony-export-bindings") from HarmonyExportInitFragment
|
|
37
|
-
* so the two fragment types do not merge and cannot interfere with each
|
|
38
|
-
* other's placement (top vs bottom).
|
|
39
|
-
* @extends {InitFragment<GenerateContext>} Context
|
|
40
|
-
*/
|
|
41
|
-
class ExportBindingInitFragment extends InitFragment {
|
|
42
|
-
/**
|
|
43
|
-
* @param {string} exportsArgument the exports identifier
|
|
44
|
-
* @param {ExportBinding[]} bindings list of export bindings
|
|
45
|
-
* @param {boolean=} placeAtEnd when true, place the d() call at the end of the module
|
|
46
|
-
* @param {OnDemandGeneration=} onDemand offered the call instead of emitting it
|
|
47
|
-
*/
|
|
48
|
-
constructor(
|
|
49
|
-
exportsArgument,
|
|
50
|
-
bindings,
|
|
51
|
-
placeAtEnd = false,
|
|
52
|
-
onDemand = undefined
|
|
53
|
-
) {
|
|
54
|
-
super(
|
|
55
|
-
undefined,
|
|
56
|
-
InitFragment.STAGE_HARMONY_EXPORTS,
|
|
57
|
-
1,
|
|
58
|
-
"harmony-export-bindings"
|
|
59
|
-
);
|
|
60
|
-
/** @type {string} */
|
|
61
|
-
this.exportsArgument = exportsArgument;
|
|
62
|
-
/** @type {ExportBinding[]} */
|
|
63
|
-
this.bindings = bindings;
|
|
64
|
-
/** @type {boolean} */
|
|
65
|
-
this.placeAtEnd = placeAtEnd;
|
|
66
|
-
/** @type {OnDemandGeneration | undefined} */
|
|
67
|
-
this.onDemand = onDemand;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* @param {ExportBindingInitFragment[]} fragments all fragments to merge
|
|
72
|
-
* @returns {ExportBindingInitFragment} merged fragment
|
|
73
|
-
*/
|
|
74
|
-
mergeAll(fragments) {
|
|
75
|
-
/** @type {ExportBinding[]} */
|
|
76
|
-
const bindings = [];
|
|
77
|
-
/** @type {Set<string>} */
|
|
78
|
-
const seenNames = new Set();
|
|
79
|
-
let placeAtEnd = false;
|
|
80
|
-
|
|
81
|
-
for (const fragment of fragments) {
|
|
82
|
-
for (const binding of fragment.bindings) {
|
|
83
|
-
const key = /** @type {string} */ (binding.name);
|
|
84
|
-
if (!seenNames.has(key)) {
|
|
85
|
-
seenNames.add(key);
|
|
86
|
-
bindings.push(binding);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (fragment.placeAtEnd) placeAtEnd = true;
|
|
90
|
-
}
|
|
91
|
-
return new ExportBindingInitFragment(
|
|
92
|
-
this.exportsArgument,
|
|
93
|
-
bindings,
|
|
94
|
-
placeAtEnd,
|
|
95
|
-
this.onDemand
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* @param {ExportBindingInitFragment} other other
|
|
101
|
-
* @returns {ExportBindingInitFragment} merged result
|
|
102
|
-
*/
|
|
103
|
-
merge(other) {
|
|
104
|
-
/** @type {ExportBinding[]} */
|
|
105
|
-
const bindings = [];
|
|
106
|
-
/** @type {Set<string>} */
|
|
107
|
-
const seenNames = new Set();
|
|
108
|
-
for (const binding of other.bindings) {
|
|
109
|
-
const key = /** @type {string} */ (binding.name);
|
|
110
|
-
seenNames.add(key);
|
|
111
|
-
bindings.push(binding);
|
|
112
|
-
}
|
|
113
|
-
for (const binding of this.bindings) {
|
|
114
|
-
const key = /** @type {string} */ (binding.name);
|
|
115
|
-
if (!seenNames.has(key)) {
|
|
116
|
-
seenNames.add(key);
|
|
117
|
-
bindings.push(binding);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return new ExportBindingInitFragment(
|
|
121
|
-
this.exportsArgument,
|
|
122
|
-
bindings,
|
|
123
|
-
this.placeAtEnd || other.placeAtEnd,
|
|
124
|
-
this.onDemand || other.onDemand
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* @param {GenerateContext} context context
|
|
130
|
-
* @returns {string} the d() call or empty string
|
|
131
|
-
*/
|
|
132
|
-
_generateDefinition({ runtimeTemplate, runtimeRequirements }) {
|
|
133
|
-
if (this.bindings.length === 0) return "";
|
|
134
|
-
|
|
135
|
-
const sorted = [...this.bindings].sort((a, b) =>
|
|
136
|
-
/** @type {string} */ (a.name) < /** @type {string} */ (b.name) ? -1 : 1
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
/** @type {string[]} */
|
|
140
|
-
const items = [];
|
|
141
|
-
for (const binding of sorted) {
|
|
142
|
-
const key = JSON.stringify(/** @type {string} */ (binding.name));
|
|
143
|
-
if (binding.bindingType === "value") {
|
|
144
|
-
items.push(`\n/* harmony export */ ${key}, 0, ${binding.value}`);
|
|
145
|
-
} else {
|
|
146
|
-
items.push(
|
|
147
|
-
`\n/* harmony export */ ${key}, ${runtimeTemplate.returningFunction(binding.value)}`
|
|
148
|
-
);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// Requested even when the call is taken over below: whoever took it may still
|
|
153
|
-
// emit it, and by then the requirement set is closed.
|
|
154
|
-
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
155
|
-
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
|
156
|
-
// Only this fragment emits the array form, so the runtime helper drops the
|
|
157
|
-
// branch reading it unless this asks for it.
|
|
158
|
-
runtimeRequirements.add(RuntimeGlobals.definePropertyGettersFromArray);
|
|
159
|
-
const definition = `/* harmony export */ ${
|
|
160
|
-
RuntimeGlobals.definePropertyGetters
|
|
161
|
-
}(${this.exportsArgument}, [${items.join(",")}\n/* harmony export */ ]);\n`;
|
|
162
|
-
return this.onDemand !== undefined &&
|
|
163
|
-
this.onDemand(definition, this.placeAtEnd)
|
|
164
|
-
? ""
|
|
165
|
-
: definition;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Returns the source code that will be included as initialization code.
|
|
170
|
-
* @param {GenerateContext} context context
|
|
171
|
-
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
|
172
|
-
*/
|
|
173
|
-
getContent(context) {
|
|
174
|
-
if (this.placeAtEnd) return undefined;
|
|
175
|
-
return this._generateDefinition(context);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/**
|
|
179
|
-
* Returns the source code that will be included at the end of the module.
|
|
180
|
-
* @param {GenerateContext} context context
|
|
181
|
-
* @returns {string | Source | undefined} the source code that will be included at the end of the module
|
|
182
|
-
*/
|
|
183
|
-
getEndContent(context) {
|
|
184
|
-
if (!this.placeAtEnd) return undefined;
|
|
185
|
-
const definePart = this._generateDefinition(context);
|
|
186
|
-
if (!definePart) return undefined;
|
|
187
|
-
return `\n${definePart}`;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
module.exports = ExportBindingInitFragment;
|
|
@@ -1,45 +0,0 @@
|
|
|
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 formatSize = require("../util/formatSize");
|
|
9
|
-
const WebpackError = require("./WebpackError");
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @typedef {object} EntrypointOverlapDetails
|
|
13
|
-
* @property {string} name
|
|
14
|
-
* @property {string[]} entrypoints the entrypoints that each ship a copy
|
|
15
|
-
* @property {number} wasted bytes the copies past the first cost
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
class EntrypointOverlapWarning extends WebpackError {
|
|
19
|
-
/**
|
|
20
|
-
* Creates an instance of EntrypointOverlapWarning.
|
|
21
|
-
* @param {EntrypointOverlapDetails[]} modules the worst offenders, largest waste first
|
|
22
|
-
* @param {number} wasted bytes all overlapping copies cost together
|
|
23
|
-
*/
|
|
24
|
-
constructor(modules, wasted) {
|
|
25
|
-
const list = modules
|
|
26
|
-
.map(
|
|
27
|
-
(module) =>
|
|
28
|
-
`\n ${module.name} (in ${module.entrypoints.join(", ")}, ${formatSize(
|
|
29
|
-
module.wasted
|
|
30
|
-
)} extra)`
|
|
31
|
-
)
|
|
32
|
-
.join("");
|
|
33
|
-
|
|
34
|
-
super(
|
|
35
|
-
`entrypoint overlap: modules shipped by more than one entrypoint add ${formatSize(
|
|
36
|
-
wasted
|
|
37
|
-
)}:${list}\nEach entrypoint downloads its own copy. 'optimization.splitChunks' with 'chunks: "all"' can move them into a chunk every entrypoint shares.\nFor more info visit https://webpack.js.org/plugins/split-chunks-plugin/`
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
/** @type {string} */
|
|
41
|
-
this.name = "EntrypointOverlapWarning";
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
module.exports = EntrypointOverlapWarning;
|
|
@@ -1,122 +0,0 @@
|
|
|
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 EntrypointOverlapWarning = require("../errors/EntrypointOverlapWarning");
|
|
9
|
-
const { compareStrings } = require("../util/comparators");
|
|
10
|
-
const getModuleSize = require("./getModuleSize");
|
|
11
|
-
const getSourceModules = require("./getSourceModules");
|
|
12
|
-
|
|
13
|
-
/** @import { PerformanceOptions } from "../../declarations/WebpackOptions" */
|
|
14
|
-
/** @import Chunk from "../Chunk" */
|
|
15
|
-
/** @import Compiler from "../Compiler" */
|
|
16
|
-
/** @import Module from "../Module" */
|
|
17
|
-
/**
|
|
18
|
-
* @import {
|
|
19
|
-
* EntrypointOverlapDetails
|
|
20
|
-
* } from "../errors/EntrypointOverlapWarning"
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
const PLUGIN_NAME = "EntrypointOverlapPlugin";
|
|
24
|
-
|
|
25
|
-
// Enough to name the offenders without printing the module graph.
|
|
26
|
-
const MAX_REPORTED_MODULES = 5;
|
|
27
|
-
|
|
28
|
-
class EntrypointOverlapPlugin {
|
|
29
|
-
/**
|
|
30
|
-
* Creates an instance of EntrypointOverlapPlugin.
|
|
31
|
-
* @param {PerformanceOptions} options the plugin options
|
|
32
|
-
*/
|
|
33
|
-
constructor(options) {
|
|
34
|
-
/** @type {PerformanceOptions["hints"]} */
|
|
35
|
-
this.hints = options.hints;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Applies the plugin by registering its hooks on the compiler.
|
|
40
|
-
* @param {Compiler} compiler the compiler instance
|
|
41
|
-
* @returns {void}
|
|
42
|
-
*/
|
|
43
|
-
apply(compiler) {
|
|
44
|
-
const hints = this.hints;
|
|
45
|
-
|
|
46
|
-
if (!hints) return;
|
|
47
|
-
|
|
48
|
-
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
49
|
-
compilation.hooks.afterSeal.tap(PLUGIN_NAME, () => {
|
|
50
|
-
const { chunkGraph, entrypoints, requestShortener } = compilation;
|
|
51
|
-
|
|
52
|
-
if (entrypoints.size < 2) return;
|
|
53
|
-
|
|
54
|
-
/** @type {Map<Module, { chunks: Set<Chunk>, entrypoints: Set<string> }>} */
|
|
55
|
-
const reach = new Map();
|
|
56
|
-
|
|
57
|
-
for (const [name, entrypoint] of entrypoints) {
|
|
58
|
-
for (const chunk of entrypoint.chunks) {
|
|
59
|
-
for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
|
|
60
|
-
// Through scope hoisting: two entrypoints concatenating the same
|
|
61
|
-
// file produce two modules, so the chunk graph alone shows none.
|
|
62
|
-
for (const inner of getSourceModules(module)) {
|
|
63
|
-
let entry = reach.get(inner);
|
|
64
|
-
|
|
65
|
-
if (entry === undefined) {
|
|
66
|
-
reach.set(
|
|
67
|
-
inner,
|
|
68
|
-
(entry = { chunks: new Set(), entrypoints: new Set() })
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
entry.chunks.add(chunk);
|
|
73
|
-
entry.entrypoints.add(name);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** @type {EntrypointOverlapDetails[]} */
|
|
80
|
-
const overlapping = [];
|
|
81
|
-
let wasted = 0;
|
|
82
|
-
|
|
83
|
-
for (const [module, { chunks, entrypoints: names }] of reach) {
|
|
84
|
-
// One chunk reached from several entrypoints is downloaded once, so
|
|
85
|
-
// only separate copies cost anything.
|
|
86
|
-
if (chunks.size < 2 || names.size < 2) continue;
|
|
87
|
-
|
|
88
|
-
const extra = getModuleSize(module) * (chunks.size - 1);
|
|
89
|
-
|
|
90
|
-
wasted += extra;
|
|
91
|
-
overlapping.push({
|
|
92
|
-
name: module.readableIdentifier(requestShortener),
|
|
93
|
-
entrypoints: [...names].sort(compareStrings),
|
|
94
|
-
wasted: extra
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (overlapping.length === 0) return;
|
|
99
|
-
|
|
100
|
-
// Ties break by name: which modules finish first is not stable.
|
|
101
|
-
overlapping.sort(
|
|
102
|
-
(a, b) => b.wasted - a.wasted || compareStrings(a.name, b.name)
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
const warning = new EntrypointOverlapWarning(
|
|
106
|
-
overlapping.slice(0, MAX_REPORTED_MODULES),
|
|
107
|
-
wasted
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
if (hints === "error") {
|
|
111
|
-
compilation.errors.push(warning);
|
|
112
|
-
} else if (hints === "stats") {
|
|
113
|
-
compilation.hints.push(warning);
|
|
114
|
-
} else {
|
|
115
|
-
compilation.warnings.push(warning);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
module.exports = EntrypointOverlapPlugin;
|