webpack 5.93.0 → 5.95.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 +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +33 -20
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +75 -68
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +6 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +41 -15
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +130 -69
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +21 -13
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +84 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +93 -81
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +32 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +26 -24
- package/lib/css/CssGenerator.js +9 -4
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +7 -2
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +35 -8
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +7 -7
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -3
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -15
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +3 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +3 -2
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +133 -86
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +8 -10
- package/lib/library/EnableLibraryPlugin.js +15 -14
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +8 -6
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +81 -51
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -2
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +54 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +4 -4
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +13 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +8 -11
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +32 -32
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +109 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +18 -17
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +5 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
- package/types.d.ts +681 -355
package/lib/node/nodeConsole.js
CHANGED
@@ -19,7 +19,7 @@ const truncateArgs = require("../logging/truncateArgs");
|
|
19
19
|
*/
|
20
20
|
module.exports = ({ colors, appendOnly, stream }) => {
|
21
21
|
/** @type {string[] | undefined} */
|
22
|
-
let currentStatusMessage
|
22
|
+
let currentStatusMessage;
|
23
23
|
let hasStatusMessage = false;
|
24
24
|
let currentIndent = "";
|
25
25
|
let currentCollapsed = 0;
|
@@ -38,17 +38,17 @@ module.exports = ({ colors, appendOnly, stream }) => {
|
|
38
38
|
return (
|
39
39
|
prefix +
|
40
40
|
colorPrefix +
|
41
|
-
str.replace(/\n/g, colorSuffix
|
41
|
+
str.replace(/\n/g, `${colorSuffix}\n${prefix}${colorPrefix}`) +
|
42
42
|
colorSuffix
|
43
43
|
);
|
44
|
-
} else {
|
45
|
-
return prefix + str.replace(/\n/g, "\n" + prefix);
|
46
44
|
}
|
45
|
+
|
46
|
+
return prefix + str.replace(/\n/g, `\n${prefix}`);
|
47
47
|
};
|
48
48
|
|
49
49
|
const clearStatusMessage = () => {
|
50
50
|
if (hasStatusMessage) {
|
51
|
-
stream.write("\
|
51
|
+
stream.write("\u001B[2K\r");
|
52
52
|
hasStatusMessage = false;
|
53
53
|
}
|
54
54
|
};
|
@@ -58,8 +58,8 @@ module.exports = ({ colors, appendOnly, stream }) => {
|
|
58
58
|
const l = /** @type {TODO} */ (stream).columns || 40;
|
59
59
|
const args = truncateArgs(currentStatusMessage, l - 1);
|
60
60
|
const str = args.join(" ");
|
61
|
-
const coloredStr = `\
|
62
|
-
stream.write(`\
|
61
|
+
const coloredStr = `\u001B[1m${str}\u001B[39m\u001B[22m`;
|
62
|
+
stream.write(`\u001B[2K\r${coloredStr}`);
|
63
63
|
hasStatusMessage = true;
|
64
64
|
};
|
65
65
|
|
@@ -69,8 +69,9 @@ module.exports = ({ colors, appendOnly, stream }) => {
|
|
69
69
|
* @param {string} colorSuffix color suffix
|
70
70
|
* @returns {(function(...any[]): void)} function to write with colors
|
71
71
|
*/
|
72
|
-
const writeColored =
|
73
|
-
|
72
|
+
const writeColored =
|
73
|
+
(prefix, colorPrefix, colorSuffix) =>
|
74
|
+
(...args) => {
|
74
75
|
if (currentCollapsed > 0) return;
|
75
76
|
clearStatusMessage();
|
76
77
|
const str = indent(
|
@@ -79,34 +80,33 @@ module.exports = ({ colors, appendOnly, stream }) => {
|
|
79
80
|
colorPrefix,
|
80
81
|
colorSuffix
|
81
82
|
);
|
82
|
-
stream.write(str
|
83
|
+
stream.write(`${str}\n`);
|
83
84
|
writeStatusMessage();
|
84
85
|
};
|
85
|
-
};
|
86
86
|
|
87
87
|
const writeGroupMessage = writeColored(
|
88
88
|
"<-> ",
|
89
|
-
"\
|
90
|
-
"\
|
89
|
+
"\u001B[1m\u001B[36m",
|
90
|
+
"\u001B[39m\u001B[22m"
|
91
91
|
);
|
92
92
|
|
93
93
|
const writeGroupCollapsedMessage = writeColored(
|
94
94
|
"<+> ",
|
95
|
-
"\
|
96
|
-
"\
|
95
|
+
"\u001B[1m\u001B[36m",
|
96
|
+
"\u001B[39m\u001B[22m"
|
97
97
|
);
|
98
98
|
|
99
99
|
return {
|
100
|
-
log: writeColored(" ", "\
|
100
|
+
log: writeColored(" ", "\u001B[1m", "\u001B[22m"),
|
101
101
|
debug: writeColored(" ", "", ""),
|
102
102
|
trace: writeColored(" ", "", ""),
|
103
|
-
info: writeColored("<i> ", "\
|
104
|
-
warn: writeColored("<w> ", "\
|
105
|
-
error: writeColored("<e> ", "\
|
103
|
+
info: writeColored("<i> ", "\u001B[1m\u001B[32m", "\u001B[39m\u001B[22m"),
|
104
|
+
warn: writeColored("<w> ", "\u001B[1m\u001B[33m", "\u001B[39m\u001B[22m"),
|
105
|
+
error: writeColored("<e> ", "\u001B[1m\u001B[31m", "\u001B[39m\u001B[22m"),
|
106
106
|
logTime: writeColored(
|
107
107
|
"<t> ",
|
108
|
-
"\
|
109
|
-
"\
|
108
|
+
"\u001B[1m\u001B[35m",
|
109
|
+
"\u001B[39m\u001B[22m"
|
110
110
|
),
|
111
111
|
group: (...args) => {
|
112
112
|
writeGroupMessage(...args);
|
@@ -123,7 +123,7 @@ module.exports = ({ colors, appendOnly, stream }) => {
|
|
123
123
|
groupEnd: () => {
|
124
124
|
if (currentCollapsed > 0) currentCollapsed--;
|
125
125
|
else if (currentIndent.length >= 2)
|
126
|
-
currentIndent = currentIndent.slice(0,
|
126
|
+
currentIndent = currentIndent.slice(0, -2);
|
127
127
|
},
|
128
128
|
profile: console.profile && (name => console.profile(name)),
|
129
129
|
profileEnd: console.profileEnd && (name => console.profileEnd(name)),
|
@@ -51,7 +51,7 @@ class AggressiveMergingPlugin {
|
|
51
51
|
chunks => {
|
52
52
|
const chunkGraph = compilation.chunkGraph;
|
53
53
|
/** @type {{a: Chunk, b: Chunk, improvement: number}[]} */
|
54
|
-
|
54
|
+
const combinations = [];
|
55
55
|
for (const a of chunks) {
|
56
56
|
if (a.canBeInitial()) continue;
|
57
57
|
for (const b of chunks) {
|
@@ -78,9 +78,7 @@ class AggressiveMergingPlugin {
|
|
78
78
|
}
|
79
79
|
}
|
80
80
|
|
81
|
-
combinations.sort((a, b) =>
|
82
|
-
return b.improvement - a.improvement;
|
83
|
-
});
|
81
|
+
combinations.sort((a, b) => b.improvement - a.improvement);
|
84
82
|
|
85
83
|
const pair = combinations[0];
|
86
84
|
|
@@ -36,11 +36,9 @@ const validate = createSchemaValidation(
|
|
36
36
|
* @param {Chunk} newChunk the new chunk
|
37
37
|
* @returns {(module: Module) => void} function to move module between chunks
|
38
38
|
*/
|
39
|
-
const moveModuleBetween = (chunkGraph, oldChunk, newChunk) => {
|
40
|
-
|
41
|
-
|
42
|
-
chunkGraph.connectChunkAndModule(newChunk, module);
|
43
|
-
};
|
39
|
+
const moveModuleBetween = (chunkGraph, oldChunk, newChunk) => module => {
|
40
|
+
chunkGraph.disconnectChunkAndModule(oldChunk, module);
|
41
|
+
chunkGraph.connectChunkAndModule(newChunk, module);
|
44
42
|
};
|
45
43
|
|
46
44
|
/**
|
@@ -48,11 +46,8 @@ const moveModuleBetween = (chunkGraph, oldChunk, newChunk) => {
|
|
48
46
|
* @param {Chunk} chunk the chunk
|
49
47
|
* @returns {function(Module): boolean} filter for entry module
|
50
48
|
*/
|
51
|
-
const isNotAEntryModule = (chunkGraph, chunk) =>
|
52
|
-
|
53
|
-
return !chunkGraph.isEntryModuleInChunk(module, chunk);
|
54
|
-
};
|
55
|
-
};
|
49
|
+
const isNotAEntryModule = (chunkGraph, chunk) => module =>
|
50
|
+
!chunkGraph.isEntryModuleInChunk(module, chunk);
|
56
51
|
|
57
52
|
/** @type {WeakSet<Chunk>} */
|
58
53
|
const recordedChunks = new WeakSet();
|
@@ -191,9 +186,9 @@ class AggressiveSplittingPlugin {
|
|
191
186
|
const newChunk = compilation.addChunk();
|
192
187
|
newChunk.chunkReason = "aggressive splitted";
|
193
188
|
for (const chunk of selectedChunks) {
|
194
|
-
selectedModules
|
195
|
-
moveModuleBetween(chunkGraph, chunk, newChunk)
|
196
|
-
|
189
|
+
for (const module of selectedModules) {
|
190
|
+
moveModuleBetween(chunkGraph, chunk, newChunk)(module);
|
191
|
+
}
|
197
192
|
chunk.split(newChunk);
|
198
193
|
chunk.name = null;
|
199
194
|
}
|
@@ -277,12 +272,14 @@ class AggressiveSplittingPlugin {
|
|
277
272
|
// We remove invalid splittings and try again
|
278
273
|
for (const chunk of compilation.chunks) {
|
279
274
|
const splitData = chunkSplitDataMap.get(chunk);
|
280
|
-
if (
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
275
|
+
if (
|
276
|
+
splitData !== undefined &&
|
277
|
+
splitData.hash &&
|
278
|
+
chunk.hash !== splitData.hash
|
279
|
+
) {
|
280
|
+
// Split was successful, but hash doesn't equal
|
281
|
+
// We can throw away the split since it's useless now
|
282
|
+
invalidSplits.add(splitData);
|
286
283
|
}
|
287
284
|
}
|
288
285
|
|
@@ -62,6 +62,7 @@ const {
|
|
62
62
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
63
63
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
64
64
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
65
|
+
/** @typedef {import("../ModuleParseError")} ModuleParseError */
|
65
66
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
66
67
|
/** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
|
67
68
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
@@ -128,12 +129,12 @@ if (!ReferencerClass.prototype.PropertyDefinition) {
|
|
128
129
|
* @property {Module} module
|
129
130
|
* @property {number} index
|
130
131
|
* @property {Program | undefined} ast
|
131
|
-
* @property {Source} internalSource
|
132
|
+
* @property {Source | undefined} internalSource
|
132
133
|
* @property {ReplaceSource} source
|
133
134
|
* @property {InitFragment<ChunkRenderContext>[]=} chunkInitFragments
|
134
|
-
* @property {ReadOnlyRuntimeRequirements} runtimeRequirements
|
135
|
-
* @property {Scope} globalScope
|
136
|
-
* @property {Scope} moduleScope
|
135
|
+
* @property {ReadOnlyRuntimeRequirements | undefined} runtimeRequirements
|
136
|
+
* @property {Scope | undefined} globalScope
|
137
|
+
* @property {Scope | undefined} moduleScope
|
137
138
|
* @property {Map<string, string>} internalNames
|
138
139
|
* @property {Map<string, string> | undefined} exportMap
|
139
140
|
* @property {Map<string, string> | undefined} rawExportMap
|
@@ -153,13 +154,13 @@ if (!ReferencerClass.prototype.PropertyDefinition) {
|
|
153
154
|
* @property {Module} module
|
154
155
|
* @property {RuntimeSpec | boolean} runtimeCondition
|
155
156
|
* @property {number} index
|
156
|
-
* @property {string} name
|
157
|
+
* @property {string | undefined} name
|
157
158
|
* @property {boolean} interopNamespaceObjectUsed
|
158
|
-
* @property {string} interopNamespaceObjectName
|
159
|
+
* @property {string | undefined} interopNamespaceObjectName
|
159
160
|
* @property {boolean} interopNamespaceObject2Used
|
160
|
-
* @property {string} interopNamespaceObject2Name
|
161
|
+
* @property {string | undefined} interopNamespaceObject2Name
|
161
162
|
* @property {boolean} interopDefaultAccessUsed
|
162
|
-
* @property {string} interopDefaultAccessName
|
163
|
+
* @property {string | undefined} interopDefaultAccessName
|
163
164
|
*/
|
164
165
|
|
165
166
|
/**
|
@@ -209,8 +210,17 @@ const RESERVED_NAMES = new Set(
|
|
209
210
|
.split(",")
|
210
211
|
);
|
211
212
|
|
213
|
+
/**
|
214
|
+
* @template T
|
215
|
+
* @param {string} property property
|
216
|
+
* @param {function(T[keyof T], T[keyof T]): 0 | 1 | -1} comparator comparator
|
217
|
+
* @returns {Comparator<T>} comparator
|
218
|
+
*/
|
212
219
|
const createComparator = (property, comparator) => (a, b) =>
|
213
|
-
comparator(
|
220
|
+
comparator(
|
221
|
+
a[/** @type {keyof T} */ (property)],
|
222
|
+
b[/** @type {keyof T} */ (property)]
|
223
|
+
);
|
214
224
|
|
215
225
|
/**
|
216
226
|
* @param {number} a a
|
@@ -218,12 +228,12 @@ const createComparator = (property, comparator) => (a, b) =>
|
|
218
228
|
* @returns {0 | 1 | -1} result
|
219
229
|
*/
|
220
230
|
const compareNumbers = (a, b) => {
|
221
|
-
if (isNaN(a)) {
|
222
|
-
if (!isNaN(b)) {
|
231
|
+
if (Number.isNaN(a)) {
|
232
|
+
if (!Number.isNaN(b)) {
|
223
233
|
return 1;
|
224
234
|
}
|
225
235
|
} else {
|
226
|
-
if (isNaN(b)) {
|
236
|
+
if (Number.isNaN(b)) {
|
227
237
|
return -1;
|
228
238
|
}
|
229
239
|
if (a !== b) {
|
@@ -397,12 +407,21 @@ const getFinalBinding = (
|
|
397
407
|
neededNamespaceObjects.add(info);
|
398
408
|
return {
|
399
409
|
info,
|
400
|
-
rawName:
|
410
|
+
rawName:
|
411
|
+
/** @type {NonNullable<ConcatenatedModuleInfo["namespaceObjectName"]>} */
|
412
|
+
(info.namespaceObjectName),
|
401
413
|
ids: exportName,
|
402
414
|
exportName
|
403
415
|
};
|
404
416
|
case "external":
|
405
|
-
return {
|
417
|
+
return {
|
418
|
+
info,
|
419
|
+
rawName:
|
420
|
+
/** @type {NonNullable<ExternalModuleInfo["name"]>} */
|
421
|
+
(info.name),
|
422
|
+
ids: exportName,
|
423
|
+
exportName
|
424
|
+
};
|
406
425
|
}
|
407
426
|
}
|
408
427
|
const exportsInfo = moduleGraph.getExportsInfo(info.module);
|
@@ -631,7 +650,7 @@ const TYPES = new Set(["javascript"]);
|
|
631
650
|
|
632
651
|
/**
|
633
652
|
* @typedef {object} ConcatenateModuleHooks
|
634
|
-
* @property {SyncBailHook<[Record<string, string>]>} exportsDefinitions
|
653
|
+
* @property {SyncBailHook<[Record<string, string>], boolean>} exportsDefinitions
|
635
654
|
*/
|
636
655
|
|
637
656
|
/** @type {WeakMap<Compilation, ConcatenateModuleHooks>} */
|
@@ -743,10 +762,9 @@ class ConcatenatedModule extends Module {
|
|
743
762
|
* @returns {string} a user readable identifier of the module
|
744
763
|
*/
|
745
764
|
readableIdentifier(requestShortener) {
|
746
|
-
return (
|
747
|
-
|
748
|
-
|
749
|
-
);
|
765
|
+
return `${this.rootModule.readableIdentifier(
|
766
|
+
requestShortener
|
767
|
+
)} + ${this._modules.size - 1} modules`;
|
750
768
|
}
|
751
769
|
|
752
770
|
/**
|
@@ -857,7 +875,14 @@ class ConcatenatedModule extends Module {
|
|
857
875
|
if (this.buildInfo.assets === undefined) {
|
858
876
|
this.buildInfo.assets = Object.create(null);
|
859
877
|
}
|
860
|
-
Object.assign(
|
878
|
+
Object.assign(
|
879
|
+
/** @type {NonNullable<BuildInfo["assets"]>} */
|
880
|
+
(
|
881
|
+
/** @type {BuildInfo} */
|
882
|
+
(this.buildInfo).assets
|
883
|
+
),
|
884
|
+
assets
|
885
|
+
);
|
861
886
|
}
|
862
887
|
if (assetsInfo) {
|
863
888
|
if (this.buildInfo.assetsInfo === undefined) {
|
@@ -903,7 +928,9 @@ class ConcatenatedModule extends Module {
|
|
903
928
|
* @returns {Iterable<{ connection: ModuleGraphConnection, runtimeCondition: RuntimeSpec | true }>} imported modules in order
|
904
929
|
*/
|
905
930
|
const getConcatenatedImports = module => {
|
906
|
-
|
931
|
+
const connections = Array.from(
|
932
|
+
moduleGraph.getOutgoingConnections(module)
|
933
|
+
);
|
907
934
|
if (module === rootModule) {
|
908
935
|
for (const c of moduleGraph.getOutgoingConnections(this))
|
909
936
|
connections.push(c);
|
@@ -1077,14 +1104,14 @@ class ConcatenatedModule extends Module {
|
|
1077
1104
|
/** @type {string} */ (rootModule.context),
|
1078
1105
|
associatedObjectForCache
|
1079
1106
|
);
|
1080
|
-
|
1107
|
+
const identifiers = [];
|
1081
1108
|
for (const module of modules) {
|
1082
1109
|
identifiers.push(cachedMakePathsRelative(module.identifier()));
|
1083
1110
|
}
|
1084
1111
|
identifiers.sort();
|
1085
1112
|
const hash = createHash(hashFunction);
|
1086
1113
|
hash.update(identifiers.join(" "));
|
1087
|
-
return rootModule.identifier()
|
1114
|
+
return `${rootModule.identifier()}|${hash.digest("hex")}`;
|
1088
1115
|
}
|
1089
1116
|
|
1090
1117
|
/**
|
@@ -1313,7 +1340,11 @@ class ConcatenatedModule extends Module {
|
|
1313
1340
|
);
|
1314
1341
|
for (const identifier of allIdentifiers) {
|
1315
1342
|
const r = /** @type {Range} */ (identifier.range);
|
1316
|
-
const path = getPathInAst(
|
1343
|
+
const path = getPathInAst(
|
1344
|
+
/** @type {NonNullable<ConcatenatedModuleInfo["ast"]>} */
|
1345
|
+
(info.ast),
|
1346
|
+
identifier
|
1347
|
+
);
|
1317
1348
|
if (path && path.length > 1) {
|
1318
1349
|
const maybeProperty =
|
1319
1350
|
path[1].type === "AssignmentPattern" &&
|
@@ -1411,7 +1442,8 @@ class ConcatenatedModule extends Module {
|
|
1411
1442
|
// Find and replace references to modules
|
1412
1443
|
for (const info of moduleToInfoMap.values()) {
|
1413
1444
|
if (info.type === "concatenated") {
|
1414
|
-
|
1445
|
+
const globalScope = /** @type {Scope} */ (info.globalScope);
|
1446
|
+
for (const reference of globalScope.through) {
|
1415
1447
|
const name = reference.identifier.name;
|
1416
1448
|
const match = ConcatenationScope.matchModuleReference(name);
|
1417
1449
|
if (match) {
|
@@ -1487,11 +1519,11 @@ class ConcatenatedModule extends Module {
|
|
1487
1519
|
return `/* ${
|
1488
1520
|
exportInfo.isReexport() ? "reexport" : "binding"
|
1489
1521
|
} */ ${finalName}`;
|
1490
|
-
} catch (
|
1522
|
+
} catch (err) {
|
1491
1523
|
/** @type {Error} */
|
1492
|
-
(
|
1524
|
+
(err).message +=
|
1493
1525
|
`\nwhile generating the root export '${name}' (used name: '${used}')`;
|
1494
|
-
throw
|
1526
|
+
throw err;
|
1495
1527
|
}
|
1496
1528
|
});
|
1497
1529
|
}
|
@@ -1510,7 +1542,7 @@ class ConcatenatedModule extends Module {
|
|
1510
1542
|
// define exports
|
1511
1543
|
if (exportsMap.size > 0) {
|
1512
1544
|
const { exportsDefinitions } = ConcatenatedModule.getCompilationHooks(
|
1513
|
-
this.compilation
|
1545
|
+
/** @type {Compilation} */ (this.compilation)
|
1514
1546
|
);
|
1515
1547
|
|
1516
1548
|
const definitions = [];
|
@@ -1529,7 +1561,7 @@ class ConcatenatedModule extends Module {
|
|
1529
1561
|
runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
|
1530
1562
|
|
1531
1563
|
if (shouldAddHarmonyFlag) {
|
1532
|
-
result.add(
|
1564
|
+
result.add("// ESM COMPAT FLAG\n");
|
1533
1565
|
result.add(
|
1534
1566
|
runtimeTemplate.defineEsModuleFlagStatement({
|
1535
1567
|
exportsArgument: this.exportsArgument,
|
@@ -1538,14 +1570,15 @@ class ConcatenatedModule extends Module {
|
|
1538
1570
|
);
|
1539
1571
|
}
|
1540
1572
|
|
1541
|
-
result.add(
|
1573
|
+
result.add("\n// EXPORTS\n");
|
1542
1574
|
result.add(
|
1543
1575
|
`${RuntimeGlobals.definePropertyGetters}(${
|
1544
1576
|
this.exportsArgument
|
1545
1577
|
}, {${definitions.join(",")}\n});\n`
|
1546
1578
|
);
|
1547
1579
|
} else {
|
1548
|
-
|
1580
|
+
/** @type {BuildMeta} */
|
1581
|
+
(this.buildMeta).exportsFinalName = exportsFinalName;
|
1549
1582
|
}
|
1550
1583
|
}
|
1551
1584
|
|
@@ -1627,9 +1660,7 @@ ${defineGetters}`
|
|
1627
1660
|
switch (info.type) {
|
1628
1661
|
case "concatenated": {
|
1629
1662
|
result.add(
|
1630
|
-
`\n;//
|
1631
|
-
requestShortener
|
1632
|
-
)}\n`
|
1663
|
+
`\n;// ${info.module.readableIdentifier(requestShortener)}\n`
|
1633
1664
|
);
|
1634
1665
|
result.add(info.source);
|
1635
1666
|
if (info.chunkInitFragments) {
|
@@ -1760,7 +1791,8 @@ ${defineGetters}`
|
|
1760
1791
|
ast = JavascriptParser._parse(code, {
|
1761
1792
|
sourceType: "module"
|
1762
1793
|
});
|
1763
|
-
} catch (
|
1794
|
+
} catch (_err) {
|
1795
|
+
const err = /** @type {TODO} */ (_err);
|
1764
1796
|
if (
|
1765
1797
|
err.loc &&
|
1766
1798
|
typeof err.loc === "object" &&
|
@@ -1768,11 +1800,9 @@ ${defineGetters}`
|
|
1768
1800
|
) {
|
1769
1801
|
const lineNumber = err.loc.line;
|
1770
1802
|
const lines = code.split("\n");
|
1771
|
-
err.message +=
|
1772
|
-
|
1773
|
-
|
1774
|
-
.slice(Math.max(0, lineNumber - 3), lineNumber + 2)
|
1775
|
-
.join("\n| ");
|
1803
|
+
err.message += `\n| ${lines
|
1804
|
+
.slice(Math.max(0, lineNumber - 3), lineNumber + 2)
|
1805
|
+
.join("\n| ")}`;
|
1776
1806
|
}
|
1777
1807
|
throw err;
|
1778
1808
|
}
|
@@ -1868,16 +1898,15 @@ ${defineGetters}`
|
|
1868
1898
|
/** @type {ModuleInfo} */ (item).module,
|
1869
1899
|
/** @type {ModuleInfo} */ (item)
|
1870
1900
|
);
|
1871
|
-
return item;
|
1872
|
-
} else {
|
1873
|
-
/** @type {ReferenceToModuleInfo} */
|
1874
|
-
const ref = {
|
1875
|
-
type: "reference",
|
1876
|
-
runtimeCondition: info.runtimeCondition,
|
1877
|
-
target: item
|
1878
|
-
};
|
1879
|
-
return ref;
|
1901
|
+
return /** @type {ModuleInfo} */ (item);
|
1880
1902
|
}
|
1903
|
+
/** @type {ReferenceToModuleInfo} */
|
1904
|
+
const ref = {
|
1905
|
+
type: "reference",
|
1906
|
+
runtimeCondition: info.runtimeCondition,
|
1907
|
+
target: item
|
1908
|
+
};
|
1909
|
+
return ref;
|
1881
1910
|
});
|
1882
1911
|
return [list, map];
|
1883
1912
|
}
|
@@ -1907,7 +1936,7 @@ ${defineGetters}`
|
|
1907
1936
|
|
1908
1937
|
const splittedInfo = extraInfo.split("/");
|
1909
1938
|
while (splittedInfo.length) {
|
1910
|
-
name = splittedInfo.pop() + (name ?
|
1939
|
+
name = splittedInfo.pop() + (name ? `_${name}` : "");
|
1911
1940
|
const nameIdent = Template.toIdentifier(name);
|
1912
1941
|
if (
|
1913
1942
|
!usedNamed1.has(nameIdent) &&
|
@@ -1920,6 +1949,7 @@ ${defineGetters}`
|
|
1920
1949
|
let nameWithNumber = Template.toIdentifier(`${name}_${i}`);
|
1921
1950
|
while (
|
1922
1951
|
usedNamed1.has(nameWithNumber) ||
|
1952
|
+
// eslint-disable-next-line no-unmodified-loop-condition
|
1923
1953
|
(usedNamed2 && usedNamed2.has(nameWithNumber))
|
1924
1954
|
) {
|
1925
1955
|
i++;
|
@@ -56,7 +56,7 @@ class EnsureChunkConditionsPlugin {
|
|
56
56
|
// We reached the entrypoint: fail
|
57
57
|
if (chunkGroup.isInitial()) {
|
58
58
|
throw new Error(
|
59
|
-
|
59
|
+
`Cannot fulfil chunk condition of ${module.identifier()}`
|
60
60
|
);
|
61
61
|
}
|
62
62
|
// Try placing in all parents
|
@@ -39,10 +39,10 @@ class FlagIncludedChunksPlugin {
|
|
39
39
|
const modulesCount = compilation.modules.size;
|
40
40
|
|
41
41
|
// precalculate the modulo values for each bit
|
42
|
-
const modulo = 1 /
|
42
|
+
const modulo = 1 / (1 / modulesCount) ** (1 / 31);
|
43
43
|
const modulos = Array.from(
|
44
44
|
{ length: 31 },
|
45
|
-
(x, i) =>
|
45
|
+
(x, i) => (modulo ** i) | 0
|
46
46
|
);
|
47
47
|
|
48
48
|
// iterate all modules to generate bit values
|
@@ -74,7 +74,7 @@ class FlagIncludedChunksPlugin {
|
|
74
74
|
const chunkAModulesCount =
|
75
75
|
chunkGraph.getNumberOfChunkModules(chunkA);
|
76
76
|
if (chunkAModulesCount === 0) continue;
|
77
|
-
let bestModule
|
77
|
+
let bestModule;
|
78
78
|
for (const module of chunkGraph.getChunkModulesIterable(chunkA)) {
|
79
79
|
if (
|
80
80
|
bestModule === undefined ||
|
@@ -45,7 +45,7 @@ function getState(parserState) {
|
|
45
45
|
* @param {ParserState} parserState parser state
|
46
46
|
* @returns {void}
|
47
47
|
*/
|
48
|
-
exports.bailout = parserState => {
|
48
|
+
module.exports.bailout = parserState => {
|
49
49
|
parserStateMap.set(parserState, false);
|
50
50
|
};
|
51
51
|
|
@@ -53,7 +53,7 @@ exports.bailout = parserState => {
|
|
53
53
|
* @param {ParserState} parserState parser state
|
54
54
|
* @returns {void}
|
55
55
|
*/
|
56
|
-
exports.enable = parserState => {
|
56
|
+
module.exports.enable = parserState => {
|
57
57
|
const state = parserStateMap.get(parserState);
|
58
58
|
if (state === false) {
|
59
59
|
return;
|
@@ -69,9 +69,9 @@ exports.enable = parserState => {
|
|
69
69
|
* @param {ParserState} parserState parser state
|
70
70
|
* @returns {boolean} true, when enabled
|
71
71
|
*/
|
72
|
-
exports.isEnabled = parserState => {
|
72
|
+
module.exports.isEnabled = parserState => {
|
73
73
|
const state = parserStateMap.get(parserState);
|
74
|
-
return
|
74
|
+
return Boolean(state);
|
75
75
|
};
|
76
76
|
|
77
77
|
/**
|
@@ -80,7 +80,7 @@ exports.isEnabled = parserState => {
|
|
80
80
|
* @param {string | TopLevelSymbol | true} usage usage data
|
81
81
|
* @returns {void}
|
82
82
|
*/
|
83
|
-
exports.addUsage = (state, symbol, usage) => {
|
83
|
+
module.exports.addUsage = (state, symbol, usage) => {
|
84
84
|
const innerGraphState = getState(state);
|
85
85
|
|
86
86
|
if (innerGraphState) {
|
@@ -102,13 +102,13 @@ exports.addUsage = (state, symbol, usage) => {
|
|
102
102
|
* @param {string | TopLevelSymbol | true} usage usage data
|
103
103
|
* @returns {void}
|
104
104
|
*/
|
105
|
-
exports.addVariableUsage = (parser, name, usage) => {
|
105
|
+
module.exports.addVariableUsage = (parser, name, usage) => {
|
106
106
|
const symbol =
|
107
107
|
/** @type {TopLevelSymbol} */ (
|
108
108
|
parser.getTagData(name, topLevelSymbolTag)
|
109
|
-
) || exports.tagTopLevelSymbol(parser, name);
|
109
|
+
) || module.exports.tagTopLevelSymbol(parser, name);
|
110
110
|
if (symbol) {
|
111
|
-
exports.addUsage(parser.state, symbol, usage);
|
111
|
+
module.exports.addUsage(parser.state, symbol, usage);
|
112
112
|
}
|
113
113
|
};
|
114
114
|
|
@@ -116,7 +116,7 @@ exports.addVariableUsage = (parser, name, usage) => {
|
|
116
116
|
* @param {ParserState} state parser state
|
117
117
|
* @returns {void}
|
118
118
|
*/
|
119
|
-
exports.inferDependencyUsage = state => {
|
119
|
+
module.exports.inferDependencyUsage = state => {
|
120
120
|
const innerGraphState = getState(state);
|
121
121
|
|
122
122
|
if (!innerGraphState) {
|
@@ -212,7 +212,7 @@ exports.inferDependencyUsage = state => {
|
|
212
212
|
* @param {ParserState} state parser state
|
213
213
|
* @param {UsageCallback} onUsageCallback on usage callback
|
214
214
|
*/
|
215
|
-
exports.onUsage = (state, onUsageCallback) => {
|
215
|
+
module.exports.onUsage = (state, onUsageCallback) => {
|
216
216
|
const innerGraphState = getState(state);
|
217
217
|
|
218
218
|
if (innerGraphState) {
|
@@ -238,7 +238,7 @@ exports.onUsage = (state, onUsageCallback) => {
|
|
238
238
|
* @param {ParserState} state parser state
|
239
239
|
* @param {TopLevelSymbol | undefined} symbol the symbol
|
240
240
|
*/
|
241
|
-
exports.setTopLevelSymbol = (state, symbol) => {
|
241
|
+
module.exports.setTopLevelSymbol = (state, symbol) => {
|
242
242
|
const innerGraphState = getState(state);
|
243
243
|
|
244
244
|
if (innerGraphState) {
|
@@ -250,7 +250,7 @@ exports.setTopLevelSymbol = (state, symbol) => {
|
|
250
250
|
* @param {ParserState} state parser state
|
251
251
|
* @returns {TopLevelSymbol|void} usage data
|
252
252
|
*/
|
253
|
-
exports.getTopLevelSymbol = state => {
|
253
|
+
module.exports.getTopLevelSymbol = state => {
|
254
254
|
const innerGraphState = getState(state);
|
255
255
|
|
256
256
|
if (innerGraphState) {
|
@@ -263,7 +263,7 @@ exports.getTopLevelSymbol = state => {
|
|
263
263
|
* @param {string} name name of variable
|
264
264
|
* @returns {TopLevelSymbol | undefined} symbol
|
265
265
|
*/
|
266
|
-
exports.tagTopLevelSymbol = (parser, name) => {
|
266
|
+
module.exports.tagTopLevelSymbol = (parser, name) => {
|
267
267
|
const innerGraphState = getState(parser.state);
|
268
268
|
if (!innerGraphState) return;
|
269
269
|
|
@@ -288,7 +288,7 @@ exports.tagTopLevelSymbol = (parser, name) => {
|
|
288
288
|
* @param {RuntimeSpec} runtime runtime
|
289
289
|
* @returns {boolean} false, when unused. Otherwise true
|
290
290
|
*/
|
291
|
-
exports.isDependencyUsedByExports = (
|
291
|
+
module.exports.isDependencyUsedByExports = (
|
292
292
|
dependency,
|
293
293
|
usedByExports,
|
294
294
|
moduleGraph,
|
@@ -316,7 +316,7 @@ exports.isDependencyUsedByExports = (
|
|
316
316
|
* @param {ModuleGraph} moduleGraph moduleGraph
|
317
317
|
* @returns {null | false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState} function to determine if the connection is active
|
318
318
|
*/
|
319
|
-
exports.getDependencyUsedByExportsCondition = (
|
319
|
+
module.exports.getDependencyUsedByExportsCondition = (
|
320
320
|
dependency,
|
321
321
|
usedByExports,
|
322
322
|
moduleGraph
|
@@ -347,5 +347,5 @@ class TopLevelSymbol {
|
|
347
347
|
}
|
348
348
|
}
|
349
349
|
|
350
|
-
exports.TopLevelSymbol = TopLevelSymbol;
|
351
|
-
exports.topLevelSymbolTag = topLevelSymbolTag;
|
350
|
+
module.exports.TopLevelSymbol = TopLevelSymbol;
|
351
|
+
module.exports.topLevelSymbolTag = topLevelSymbolTag;
|
@@ -109,13 +109,14 @@ class InnerGraphPlugin {
|
|
109
109
|
parser.hooks.preStatement.tap(PLUGIN_NAME, statement => {
|
110
110
|
if (!InnerGraph.isEnabled(parser.state)) return;
|
111
111
|
|
112
|
-
if (
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
112
|
+
if (
|
113
|
+
parser.scope.topLevelScope === true &&
|
114
|
+
statement.type === "FunctionDeclaration"
|
115
|
+
) {
|
116
|
+
const name = statement.id ? statement.id.name : "*default*";
|
117
|
+
const fn = InnerGraph.tagTopLevelSymbol(parser, name);
|
118
|
+
statementWithTopLevelSymbol.set(statement, fn);
|
119
|
+
return true;
|
119
120
|
}
|
120
121
|
});
|
121
122
|
|