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/MainTemplate.js
CHANGED
@@ -10,6 +10,7 @@ const util = require("util");
|
|
10
10
|
const RuntimeGlobals = require("./RuntimeGlobals");
|
11
11
|
const memoize = require("./util/memoize");
|
12
12
|
|
13
|
+
/** @typedef {import("tapable").Tap} Tap */
|
13
14
|
/** @typedef {import("webpack-sources").ConcatSource} ConcatSource */
|
14
15
|
/** @typedef {import("webpack-sources").Source} Source */
|
15
16
|
/** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
|
@@ -17,15 +18,24 @@ const memoize = require("./util/memoize");
|
|
17
18
|
/** @typedef {import("./Chunk")} Chunk */
|
18
19
|
/** @typedef {import("./Compilation")} Compilation */
|
19
20
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
21
|
+
/** @typedef {import("./Compilation").InterpolatedPathAndAssetInfo} InterpolatedPathAndAssetInfo */
|
20
22
|
/** @typedef {import("./Module")} Module} */
|
21
23
|
/** @typedef {import("./util/Hash")} Hash} */
|
22
24
|
/** @typedef {import("./DependencyTemplates")} DependencyTemplates} */
|
23
25
|
/** @typedef {import("./javascript/JavascriptModulesPlugin").RenderContext} RenderContext} */
|
26
|
+
/** @typedef {import("./javascript/JavascriptModulesPlugin").RenderBootstrapContext} RenderBootstrapContext} */
|
27
|
+
/** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkHashContext} ChunkHashContext} */
|
24
28
|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate} */
|
25
29
|
/** @typedef {import("./ModuleGraph")} ModuleGraph} */
|
26
30
|
/** @typedef {import("./ChunkGraph")} ChunkGraph} */
|
27
31
|
/** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions} */
|
28
32
|
/** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry} */
|
33
|
+
/** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath} */
|
34
|
+
/** @typedef {import("./TemplatedPathPlugin").PathData} PathData} */
|
35
|
+
/**
|
36
|
+
* @template T
|
37
|
+
* @typedef {import("tapable").IfSet<T>} IfSet
|
38
|
+
*/
|
29
39
|
|
30
40
|
const getJavascriptModulesPlugin = memoize(() =>
|
31
41
|
require("./javascript/JavascriptModulesPlugin")
|
@@ -40,7 +50,6 @@ const getLoadScriptRuntimeModule = memoize(() =>
|
|
40
50
|
// TODO webpack 6 remove this class
|
41
51
|
class MainTemplate {
|
42
52
|
/**
|
43
|
-
*
|
44
53
|
* @param {OutputOptions} outputOptions output options for the MainTemplate
|
45
54
|
* @param {Compilation} compilation the compilation
|
46
55
|
*/
|
@@ -50,6 +59,11 @@ class MainTemplate {
|
|
50
59
|
this.hooks = Object.freeze({
|
51
60
|
renderManifest: {
|
52
61
|
tap: util.deprecate(
|
62
|
+
/**
|
63
|
+
* @template AdditionalOptions
|
64
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
65
|
+
* @param {function(RenderManifestEntry[], RenderManifestOptions): RenderManifestEntry[]} fn fn
|
66
|
+
*/
|
53
67
|
(options, fn) => {
|
54
68
|
compilation.hooks.renderManifest.tap(
|
55
69
|
options,
|
@@ -79,6 +93,11 @@ class MainTemplate {
|
|
79
93
|
},
|
80
94
|
require: {
|
81
95
|
tap: util.deprecate(
|
96
|
+
/**
|
97
|
+
* @template AdditionalOptions
|
98
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
99
|
+
* @param {function(string, RenderBootstrapContext): string} fn fn
|
100
|
+
*/
|
82
101
|
(options, fn) => {
|
83
102
|
getJavascriptModulesPlugin()
|
84
103
|
.getCompilationHooks(compilation)
|
@@ -111,6 +130,11 @@ class MainTemplate {
|
|
111
130
|
},
|
112
131
|
render: {
|
113
132
|
tap: util.deprecate(
|
133
|
+
/**
|
134
|
+
* @template AdditionalOptions
|
135
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
136
|
+
* @param {function(Source, Chunk, string | undefined, ModuleTemplate, DependencyTemplates): Source} fn fn
|
137
|
+
*/
|
114
138
|
(options, fn) => {
|
115
139
|
getJavascriptModulesPlugin()
|
116
140
|
.getCompilationHooks(compilation)
|
@@ -138,6 +162,11 @@ class MainTemplate {
|
|
138
162
|
},
|
139
163
|
renderWithEntry: {
|
140
164
|
tap: util.deprecate(
|
165
|
+
/**
|
166
|
+
* @template AdditionalOptions
|
167
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
168
|
+
* @param {function(Source, Chunk, string | undefined): Source} fn fn
|
169
|
+
*/
|
141
170
|
(options, fn) => {
|
142
171
|
getJavascriptModulesPlugin()
|
143
172
|
.getCompilationHooks(compilation)
|
@@ -159,6 +188,11 @@ class MainTemplate {
|
|
159
188
|
},
|
160
189
|
assetPath: {
|
161
190
|
tap: util.deprecate(
|
191
|
+
/**
|
192
|
+
* @template AdditionalOptions
|
193
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
194
|
+
* @param {function(string, object, AssetInfo | undefined): string} fn fn
|
195
|
+
*/
|
162
196
|
(options, fn) => {
|
163
197
|
compilation.hooks.assetPath.tap(options, fn);
|
164
198
|
},
|
@@ -166,15 +200,23 @@ class MainTemplate {
|
|
166
200
|
"DEP_WEBPACK_MAIN_TEMPLATE_ASSET_PATH"
|
167
201
|
),
|
168
202
|
call: util.deprecate(
|
169
|
-
|
170
|
-
|
171
|
-
|
203
|
+
/**
|
204
|
+
* @param {TemplatePath} filename used to get asset path with hash
|
205
|
+
* @param {PathData} options context data
|
206
|
+
* @returns {string} interpolated path
|
207
|
+
*/
|
208
|
+
(filename, options) => compilation.getAssetPath(filename, options),
|
172
209
|
"MainTemplate.hooks.assetPath is deprecated (use Compilation.hooks.assetPath instead)",
|
173
210
|
"DEP_WEBPACK_MAIN_TEMPLATE_ASSET_PATH"
|
174
211
|
)
|
175
212
|
},
|
176
213
|
hash: {
|
177
214
|
tap: util.deprecate(
|
215
|
+
/**
|
216
|
+
* @template AdditionalOptions
|
217
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
218
|
+
* @param {function(Hash): void} fn fn
|
219
|
+
*/
|
178
220
|
(options, fn) => {
|
179
221
|
compilation.hooks.fullHash.tap(options, fn);
|
180
222
|
},
|
@@ -184,6 +226,11 @@ class MainTemplate {
|
|
184
226
|
},
|
185
227
|
hashForChunk: {
|
186
228
|
tap: util.deprecate(
|
229
|
+
/**
|
230
|
+
* @template AdditionalOptions
|
231
|
+
* @param {string | Tap & IfSet<AdditionalOptions>} options options
|
232
|
+
* @param {function(Hash, Chunk): void} fn fn
|
233
|
+
*/
|
187
234
|
(options, fn) => {
|
188
235
|
getJavascriptModulesPlugin()
|
189
236
|
.getCompilationHooks(compilation)
|
@@ -259,7 +306,8 @@ class MainTemplate {
|
|
259
306
|
* @param {string} hash the hash
|
260
307
|
* @param {number=} length length of the hash
|
261
308
|
* @returns {string} generated code
|
262
|
-
*/
|
309
|
+
*/
|
310
|
+
(hash, length) => {
|
263
311
|
if (length) {
|
264
312
|
return `${RuntimeGlobals.getFullHash} ? ${
|
265
313
|
RuntimeGlobals.getFullHash
|
@@ -273,31 +321,36 @@ class MainTemplate {
|
|
273
321
|
|
274
322
|
this.getPublicPath = util.deprecate(
|
275
323
|
/**
|
276
|
-
*
|
277
|
-
* @
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
compilation.outputOptions.publicPath,
|
324
|
+
* @param {PathData} options context data
|
325
|
+
* @returns {string} interpolated path
|
326
|
+
*/ options =>
|
327
|
+
compilation.getAssetPath(
|
328
|
+
/** @type {string} */
|
329
|
+
(compilation.outputOptions.publicPath),
|
282
330
|
options
|
283
|
-
)
|
284
|
-
},
|
331
|
+
),
|
285
332
|
"MainTemplate.getPublicPath is deprecated (use Compilation.getAssetPath(compilation.outputOptions.publicPath, options) instead)",
|
286
333
|
"DEP_WEBPACK_MAIN_TEMPLATE_GET_PUBLIC_PATH"
|
287
334
|
);
|
288
335
|
|
289
336
|
this.getAssetPath = util.deprecate(
|
290
|
-
|
291
|
-
|
292
|
-
|
337
|
+
/**
|
338
|
+
* @param {TemplatePath} path used to get asset path with hash
|
339
|
+
* @param {PathData} options context data
|
340
|
+
* @returns {string} interpolated path
|
341
|
+
*/
|
342
|
+
(path, options) => compilation.getAssetPath(path, options),
|
293
343
|
"MainTemplate.getAssetPath is deprecated (use Compilation.getAssetPath instead)",
|
294
344
|
"DEP_WEBPACK_MAIN_TEMPLATE_GET_ASSET_PATH"
|
295
345
|
);
|
296
346
|
|
297
347
|
this.getAssetPathWithInfo = util.deprecate(
|
298
|
-
|
299
|
-
|
300
|
-
|
348
|
+
/**
|
349
|
+
* @param {TemplatePath} path used to get asset path with hash
|
350
|
+
* @param {PathData} options context data
|
351
|
+
* @returns {InterpolatedPathAndAssetInfo} interpolated path and asset info
|
352
|
+
*/
|
353
|
+
(path, options) => compilation.getAssetPathWithInfo(path, options),
|
301
354
|
"MainTemplate.getAssetPathWithInfo is deprecated (use Compilation.getAssetPath instead)",
|
302
355
|
"DEP_WEBPACK_MAIN_TEMPLATE_GET_ASSET_PATH_WITH_INFO"
|
303
356
|
);
|
package/lib/Module.js
CHANGED
@@ -18,10 +18,12 @@ const makeSerializable = require("./util/makeSerializable");
|
|
18
18
|
/** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
19
19
|
/** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
|
20
20
|
/** @typedef {import("./Chunk")} Chunk */
|
21
|
+
/** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
|
21
22
|
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
22
23
|
/** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
|
23
24
|
/** @typedef {import("./Compilation")} Compilation */
|
24
25
|
/** @typedef {import("./Compilation").AssetInfo} AssetInfo */
|
26
|
+
/** @typedef {import("./Compilation").ValueCacheVersion} ValueCacheVersion */
|
25
27
|
/** @typedef {import("./ConcatenationScope")} ConcatenationScope */
|
26
28
|
/** @typedef {import("./Dependency")} Dependency */
|
27
29
|
/** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
|
@@ -81,7 +83,7 @@ const makeSerializable = require("./util/makeSerializable");
|
|
81
83
|
* @typedef {object} CodeGenerationResult
|
82
84
|
* @property {Map<string, Source>} sources the resulting sources for all source types
|
83
85
|
* @property {Map<string, any>=} data the resulting data for all source types
|
84
|
-
* @property {ReadOnlyRuntimeRequirements} runtimeRequirements the runtime requirements
|
86
|
+
* @property {ReadOnlyRuntimeRequirements | null} runtimeRequirements the runtime requirements
|
85
87
|
* @property {string=} hash a hash of the code generation result (will be automatically calculated from sources and runtimeRequirements if not provided)
|
86
88
|
*/
|
87
89
|
|
@@ -112,7 +114,7 @@ const makeSerializable = require("./util/makeSerializable");
|
|
112
114
|
* @property {LazySet<string>=} contextDependencies
|
113
115
|
* @property {LazySet<string>=} missingDependencies
|
114
116
|
* @property {LazySet<string>=} buildDependencies
|
115
|
-
* @property {(Map<string,
|
117
|
+
* @property {(Map<string, ValueCacheVersion>)=} valueDependencies
|
116
118
|
* @property {TODO=} hash
|
117
119
|
* @property {Record<string, Source>=} assets
|
118
120
|
* @property {Map<string, AssetInfo | undefined>=} assetsInfo
|
@@ -151,12 +153,11 @@ const deprecatedNeedRebuild = util.deprecate(
|
|
151
153
|
* @param {NeedBuildContext} context context info
|
152
154
|
* @returns {boolean} true, when rebuild is needed
|
153
155
|
*/
|
154
|
-
(module, context) =>
|
155
|
-
|
156
|
+
(module, context) =>
|
157
|
+
module.needRebuild(
|
156
158
|
context.fileSystemInfo.getDeprecatedFileTimestamps(),
|
157
159
|
context.fileSystemInfo.getDeprecatedContextTimestamps()
|
158
|
-
)
|
159
|
-
},
|
160
|
+
),
|
160
161
|
"Module.needRebuild is deprecated in favor of Module.needBuild",
|
161
162
|
"DEP_WEBPACK_MODULE_NEED_REBUILD"
|
162
163
|
);
|
@@ -214,6 +215,9 @@ class Module extends DependenciesBlock {
|
|
214
215
|
|
215
216
|
// TODO remove in webpack 6
|
216
217
|
// BACKWARD-COMPAT START
|
218
|
+
/**
|
219
|
+
* @returns {ModuleId | null} module id
|
220
|
+
*/
|
217
221
|
get id() {
|
218
222
|
return ChunkGraph.getChunkGraphForModule(
|
219
223
|
this,
|
@@ -222,6 +226,9 @@ class Module extends DependenciesBlock {
|
|
222
226
|
).getModuleId(this);
|
223
227
|
}
|
224
228
|
|
229
|
+
/**
|
230
|
+
* @param {ModuleId} value value
|
231
|
+
*/
|
225
232
|
set id(value) {
|
226
233
|
if (value === "") {
|
227
234
|
this.needId = false;
|
@@ -865,9 +872,8 @@ class Module extends DependenciesBlock {
|
|
865
872
|
// Better override this method to return the correct types
|
866
873
|
if (this.source === Module.prototype.source) {
|
867
874
|
return DEFAULT_TYPES_UNKNOWN;
|
868
|
-
} else {
|
869
|
-
return DEFAULT_TYPES_JS;
|
870
875
|
}
|
876
|
+
return DEFAULT_TYPES_JS;
|
871
877
|
}
|
872
878
|
|
873
879
|
/**
|
@@ -899,7 +905,11 @@ class Module extends DependenciesBlock {
|
|
899
905
|
};
|
900
906
|
const sources = this.codeGeneration(codeGenContext).sources;
|
901
907
|
|
902
|
-
return type
|
908
|
+
return /** @type {Source} */ (
|
909
|
+
type
|
910
|
+
? sources.get(type)
|
911
|
+
: sources.get(/** @type {string} */ (first(this.getSourceTypes())))
|
912
|
+
);
|
903
913
|
}
|
904
914
|
|
905
915
|
/* istanbul ignore next */
|
@@ -1105,6 +1115,8 @@ class Module extends DependenciesBlock {
|
|
1105
1115
|
makeSerializable(Module, "webpack/lib/Module");
|
1106
1116
|
|
1107
1117
|
// TODO remove in webpack 6
|
1118
|
+
// eslint-disable-next-line no-warning-comments
|
1119
|
+
// @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
|
1108
1120
|
Object.defineProperty(Module.prototype, "hasEqualsChunks", {
|
1109
1121
|
get() {
|
1110
1122
|
throw new Error(
|
@@ -1114,6 +1126,8 @@ Object.defineProperty(Module.prototype, "hasEqualsChunks", {
|
|
1114
1126
|
});
|
1115
1127
|
|
1116
1128
|
// TODO remove in webpack 6
|
1129
|
+
// eslint-disable-next-line no-warning-comments
|
1130
|
+
// @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
|
1117
1131
|
Object.defineProperty(Module.prototype, "isUsed", {
|
1118
1132
|
get() {
|
1119
1133
|
throw new Error(
|
@@ -1159,6 +1173,8 @@ Object.defineProperty(Module.prototype, "warnings", {
|
|
1159
1173
|
});
|
1160
1174
|
|
1161
1175
|
// TODO remove in webpack 6
|
1176
|
+
// eslint-disable-next-line no-warning-comments
|
1177
|
+
// @ts-ignore https://github.com/microsoft/TypeScript/issues/42919
|
1162
1178
|
Object.defineProperty(Module.prototype, "used", {
|
1163
1179
|
get() {
|
1164
1180
|
throw new Error(
|
package/lib/ModuleBuildError.js
CHANGED
@@ -19,13 +19,9 @@ class ModuleBuildError extends WebpackError {
|
|
19
19
|
*/
|
20
20
|
constructor(err, { from = null } = {}) {
|
21
21
|
let message = "Module build failed";
|
22
|
-
let details
|
22
|
+
let details;
|
23
23
|
|
24
|
-
|
25
|
-
message += ` (from ${from}):\n`;
|
26
|
-
} else {
|
27
|
-
message += ": ";
|
28
|
-
}
|
24
|
+
message += from ? ` (from ${from}):\n` : ": ";
|
29
25
|
|
30
26
|
if (err !== null && typeof err === "object") {
|
31
27
|
if (typeof err.stack === "string" && err.stack) {
|
@@ -36,11 +32,8 @@ class ModuleBuildError extends WebpackError {
|
|
36
32
|
} else {
|
37
33
|
details = stack;
|
38
34
|
|
39
|
-
|
40
|
-
message
|
41
|
-
} else {
|
42
|
-
message += err;
|
43
|
-
}
|
35
|
+
message +=
|
36
|
+
typeof err.message === "string" && err.message ? err.message : err;
|
44
37
|
}
|
45
38
|
} else if (typeof err.message === "string" && err.message) {
|
46
39
|
message += err.message;
|
@@ -30,11 +30,11 @@ class ModuleDependencyError extends WebpackError {
|
|
30
30
|
/** error is not (de)serialized, so it might be undefined after deserialization */
|
31
31
|
this.error = err;
|
32
32
|
|
33
|
-
if (err && /** @type {any} */ (err).hideStack) {
|
34
|
-
this.stack =
|
35
|
-
|
36
|
-
|
37
|
-
this.stack
|
33
|
+
if (err && /** @type {any} */ (err).hideStack && err.stack) {
|
34
|
+
this.stack = /** @type {string} */ `${err.stack
|
35
|
+
.split("\n")
|
36
|
+
.slice(1)
|
37
|
+
.join("\n")}\n\n${this.stack}`;
|
38
38
|
}
|
39
39
|
}
|
40
40
|
}
|
@@ -30,11 +30,11 @@ class ModuleDependencyWarning extends WebpackError {
|
|
30
30
|
/** error is not (de)serialized, so it might be undefined after deserialization */
|
31
31
|
this.error = err;
|
32
32
|
|
33
|
-
if (err && /** @type {any} */ (err).hideStack) {
|
34
|
-
this.stack =
|
35
|
-
|
36
|
-
|
37
|
-
this.stack
|
33
|
+
if (err && /** @type {any} */ (err).hideStack && err.stack) {
|
34
|
+
this.stack = /** @type {string} */ `${err.stack
|
35
|
+
.split("\n")
|
36
|
+
.slice(1)
|
37
|
+
.join("\n")}\n\n${this.stack}`;
|
38
38
|
}
|
39
39
|
}
|
40
40
|
}
|
package/lib/ModuleError.js
CHANGED
@@ -20,11 +20,7 @@ class ModuleError extends WebpackError {
|
|
20
20
|
constructor(err, { from = null } = {}) {
|
21
21
|
let message = "Module Error";
|
22
22
|
|
23
|
-
|
24
|
-
message += ` (from ${from}):\n`;
|
25
|
-
} else {
|
26
|
-
message += ": ";
|
27
|
-
}
|
23
|
+
message += from ? ` (from ${from}):\n` : ": ";
|
28
24
|
|
29
25
|
if (err && typeof err === "object" && err.message) {
|
30
26
|
message += err.message;
|
@@ -17,7 +17,7 @@ const memoize = require("./util/memoize");
|
|
17
17
|
/** @typedef {string | RegExp | (string | RegExp)[]} Matcher */
|
18
18
|
/** @typedef {{test?: Matcher, include?: Matcher, exclude?: Matcher }} MatchObject */
|
19
19
|
|
20
|
-
const ModuleFilenameHelpers = exports;
|
20
|
+
const ModuleFilenameHelpers = module.exports;
|
21
21
|
|
22
22
|
// TODO webpack 6: consider removing these
|
23
23
|
ModuleFilenameHelpers.ALL_LOADERS_RESOURCE = "[all-loaders][resource]";
|
@@ -54,12 +54,10 @@ ModuleFilenameHelpers.REGEXP_NAMESPACE = /\[namespace\]/gi;
|
|
54
54
|
* @param {string} token the token to search for
|
55
55
|
* @returns {ReturnStringCallback} a function that returns the part of the string after the token
|
56
56
|
*/
|
57
|
-
const getAfter = (strFn, token) => {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
return idx < 0 ? "" : str.slice(idx);
|
62
|
-
};
|
57
|
+
const getAfter = (strFn, token) => () => {
|
58
|
+
const str = strFn();
|
59
|
+
const idx = str.indexOf(token);
|
60
|
+
return idx < 0 ? "" : str.slice(idx);
|
63
61
|
};
|
64
62
|
|
65
63
|
/**
|
@@ -68,12 +66,10 @@ const getAfter = (strFn, token) => {
|
|
68
66
|
* @param {string} token the token to search for
|
69
67
|
* @returns {ReturnStringCallback} a function that returns the part of the string before the token
|
70
68
|
*/
|
71
|
-
const getBefore = (strFn, token) => {
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
return idx < 0 ? "" : str.slice(0, idx);
|
76
|
-
};
|
69
|
+
const getBefore = (strFn, token) => () => {
|
70
|
+
const str = strFn();
|
71
|
+
const idx = str.lastIndexOf(token);
|
72
|
+
return idx < 0 ? "" : str.slice(0, idx);
|
77
73
|
};
|
78
74
|
|
79
75
|
/**
|
@@ -82,14 +78,14 @@ const getBefore = (strFn, token) => {
|
|
82
78
|
* @param {string | Hash=} hashFunction the hash function to use
|
83
79
|
* @returns {ReturnStringCallback} a function that returns the hash of the string
|
84
80
|
*/
|
85
|
-
const getHash =
|
86
|
-
|
81
|
+
const getHash =
|
82
|
+
(strFn, hashFunction = "md4") =>
|
83
|
+
() => {
|
87
84
|
const hash = createHash(hashFunction);
|
88
85
|
hash.update(strFn());
|
89
86
|
const digest = /** @type {string} */ (hash.digest("hex"));
|
90
87
|
return digest.slice(0, 4);
|
91
88
|
};
|
92
|
-
};
|
93
89
|
|
94
90
|
/**
|
95
91
|
* Returns a function that returns the string with the token replaced with the replacement
|
@@ -108,7 +104,7 @@ const asRegExp = test => {
|
|
108
104
|
if (typeof test === "string") {
|
109
105
|
// Escape special characters in the string to prevent them from being interpreted as special characters in a regular expression. Do this by
|
110
106
|
// adding a backslash before each special character
|
111
|
-
test = new RegExp(
|
107
|
+
test = new RegExp(`^${test.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")}`);
|
112
108
|
}
|
113
109
|
return test;
|
114
110
|
};
|
@@ -143,7 +139,6 @@ const lazyObject = obj => {
|
|
143
139
|
const SQUARE_BRACKET_TAG_REGEXP = /\[\\*([\w-]+)\\*\]/gi;
|
144
140
|
|
145
141
|
/**
|
146
|
-
*
|
147
142
|
* @param {Module | string} module the module
|
148
143
|
* @param {TODO} options options
|
149
144
|
* @param {object} contextInfo context info
|
@@ -153,6 +148,7 @@ const SQUARE_BRACKET_TAG_REGEXP = /\[\\*([\w-]+)\\*\]/gi;
|
|
153
148
|
* @returns {string} the filename
|
154
149
|
*/
|
155
150
|
ModuleFilenameHelpers.createFilename = (
|
151
|
+
// eslint-disable-next-line default-param-last
|
156
152
|
module = "",
|
157
153
|
options,
|
158
154
|
{ requestShortener, chunkGraph, hashFunction = "md4" }
|
@@ -213,9 +209,9 @@ ModuleFilenameHelpers.createFilename = (
|
|
213
209
|
if (typeof opts.moduleFilenameTemplate === "function") {
|
214
210
|
return opts.moduleFilenameTemplate(
|
215
211
|
lazyObject({
|
216
|
-
identifier
|
217
|
-
shortIdentifier
|
218
|
-
resource
|
212
|
+
identifier,
|
213
|
+
shortIdentifier,
|
214
|
+
resource,
|
219
215
|
resourcePath: memoize(resourcePath),
|
220
216
|
absoluteResourcePath: memoize(absoluteResourcePath),
|
221
217
|
loaders: memoize(loaders),
|
@@ -285,13 +281,11 @@ ModuleFilenameHelpers.createFilename = (
|
|
285
281
|
* Replaces duplicate items in an array with new values generated by a callback function.
|
286
282
|
* The callback function is called with the duplicate item, the index of the duplicate item, and the number of times the item has been replaced.
|
287
283
|
* The callback function should return the new value for the duplicate item.
|
288
|
-
*
|
289
284
|
* @template T
|
290
285
|
* @param {T[]} array the array with duplicates to be replaced
|
291
286
|
* @param {(duplicateItem: T, duplicateItemIndex: number, numberOfTimesReplaced: number) => T} fn callback function to generate new values for the duplicate items
|
292
287
|
* @param {(firstElement:T, nextElement:T) => -1 | 0 | 1} [comparator] optional comparator function to sort the duplicate items
|
293
288
|
* @returns {T[]} the array with duplicates replaced
|
294
|
-
*
|
295
289
|
* @example
|
296
290
|
* ```js
|
297
291
|
* const array = ["a", "b", "c", "a", "b", "a"];
|
@@ -303,33 +297,30 @@ ModuleFilenameHelpers.replaceDuplicates = (array, fn, comparator) => {
|
|
303
297
|
const countMap = Object.create(null);
|
304
298
|
const posMap = Object.create(null);
|
305
299
|
|
306
|
-
array.
|
300
|
+
for (const [idx, item] of array.entries()) {
|
307
301
|
countMap[item] = countMap[item] || [];
|
308
302
|
countMap[item].push(idx);
|
309
303
|
posMap[item] = 0;
|
310
|
-
}
|
304
|
+
}
|
311
305
|
if (comparator) {
|
312
|
-
Object.keys(countMap)
|
306
|
+
for (const item of Object.keys(countMap)) {
|
313
307
|
countMap[item].sort(comparator);
|
314
|
-
}
|
308
|
+
}
|
315
309
|
}
|
316
310
|
return array.map((item, i) => {
|
317
311
|
if (countMap[item].length > 1) {
|
318
312
|
if (comparator && countMap[item][0] === i) return item;
|
319
313
|
return fn(item, i, posMap[item]++);
|
320
|
-
} else {
|
321
|
-
return item;
|
322
314
|
}
|
315
|
+
return item;
|
323
316
|
});
|
324
317
|
};
|
325
318
|
|
326
319
|
/**
|
327
320
|
* Tests if a string matches a RegExp or an array of RegExp.
|
328
|
-
*
|
329
321
|
* @param {string} str string to test
|
330
322
|
* @param {Matcher} test value which will be used to match against the string
|
331
323
|
* @returns {boolean} true, when the RegExp matches
|
332
|
-
*
|
333
324
|
* @example
|
334
325
|
* ```js
|
335
326
|
* ModuleFilenameHelpers.matchPart("foo.js", "foo"); // true
|
@@ -349,9 +340,8 @@ ModuleFilenameHelpers.matchPart = (str, test) => {
|
|
349
340
|
|
350
341
|
if (Array.isArray(test)) {
|
351
342
|
return test.map(asRegExp).some(regExp => regExp.test(str));
|
352
|
-
} else {
|
353
|
-
return asRegExp(test).test(str);
|
354
343
|
}
|
344
|
+
return asRegExp(test).test(str);
|
355
345
|
};
|
356
346
|
|
357
347
|
/**
|
@@ -361,7 +351,6 @@ ModuleFilenameHelpers.matchPart = (str, test) => {
|
|
361
351
|
* - `exclude`: a RegExp or an array of RegExp
|
362
352
|
*
|
363
353
|
* The `test` property is tested first, then `include` and then `exclude`.
|
364
|
-
*
|
365
354
|
* @param {MatchObject} obj a match object to test against the string
|
366
355
|
* @param {string} str string to test against the matching object
|
367
356
|
* @returns {boolean} true, when the object matches
|
@@ -381,20 +370,14 @@ ModuleFilenameHelpers.matchPart = (str, test) => {
|
|
381
370
|
* ```
|
382
371
|
*/
|
383
372
|
ModuleFilenameHelpers.matchObject = (obj, str) => {
|
384
|
-
if (obj.test) {
|
385
|
-
|
386
|
-
return false;
|
387
|
-
}
|
373
|
+
if (obj.test && !ModuleFilenameHelpers.matchPart(str, obj.test)) {
|
374
|
+
return false;
|
388
375
|
}
|
389
|
-
if (obj.include) {
|
390
|
-
|
391
|
-
return false;
|
392
|
-
}
|
376
|
+
if (obj.include && !ModuleFilenameHelpers.matchPart(str, obj.include)) {
|
377
|
+
return false;
|
393
378
|
}
|
394
|
-
if (obj.exclude) {
|
395
|
-
|
396
|
-
return false;
|
397
|
-
}
|
379
|
+
if (obj.exclude && ModuleFilenameHelpers.matchPart(str, obj.exclude)) {
|
380
|
+
return false;
|
398
381
|
}
|
399
382
|
return true;
|
400
383
|
};
|
package/lib/ModuleGraph.js
CHANGED
@@ -36,7 +36,7 @@ const getConnectionsByOriginModule = set => {
|
|
36
36
|
/** @type {Module | 0} */
|
37
37
|
let lastModule = 0;
|
38
38
|
/** @type {ModuleGraphConnection[] | undefined} */
|
39
|
-
let lastList
|
39
|
+
let lastList;
|
40
40
|
for (const connection of set) {
|
41
41
|
const { originModule } = connection;
|
42
42
|
if (lastModule === originModule) {
|
@@ -67,7 +67,7 @@ const getConnectionsByModule = set => {
|
|
67
67
|
/** @type {Module | 0} */
|
68
68
|
let lastModule = 0;
|
69
69
|
/** @type {ModuleGraphConnection[] | undefined} */
|
70
|
-
let lastList
|
70
|
+
let lastList;
|
71
71
|
for (const connection of set) {
|
72
72
|
const { module } = connection;
|
73
73
|
if (lastModule === module) {
|
@@ -445,7 +445,7 @@ class ModuleGraph {
|
|
445
445
|
}
|
446
446
|
}
|
447
447
|
this._dependencyMap.set(dependency, null);
|
448
|
-
return
|
448
|
+
return;
|
449
449
|
}
|
450
450
|
return connection === null ? undefined : connection;
|
451
451
|
}
|
@@ -851,12 +851,13 @@ class ModuleGraph {
|
|
851
851
|
const moduleGraph = moduleGraphForModuleMap.get(module);
|
852
852
|
if (!moduleGraph)
|
853
853
|
throw new Error(
|
854
|
-
|
855
|
-
|
854
|
+
`${
|
855
|
+
deprecateMessage
|
856
|
+
}There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
|
856
857
|
);
|
857
858
|
return moduleGraph;
|
858
859
|
},
|
859
|
-
deprecateMessage
|
860
|
+
`${deprecateMessage}: Use new ModuleGraph API`,
|
860
861
|
deprecationCode
|
861
862
|
);
|
862
863
|
deprecateMap.set(deprecateMessage, newFn);
|
@@ -73,7 +73,7 @@ class ModuleGraphConnection {
|
|
73
73
|
this.resolvedModule = module;
|
74
74
|
this.module = module;
|
75
75
|
this.weak = weak;
|
76
|
-
this.conditional =
|
76
|
+
this.conditional = Boolean(condition);
|
77
77
|
this._active = condition !== false;
|
78
78
|
/** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
|
79
79
|
this.condition = condition || undefined;
|
@@ -135,11 +135,6 @@ class ModuleGraphConnection {
|
|
135
135
|
return Array.from(this.explanations).join(" ");
|
136
136
|
}
|
137
137
|
|
138
|
-
// TODO webpack 5 remove
|
139
|
-
get active() {
|
140
|
-
throw new Error("Use getActiveState instead");
|
141
|
-
}
|
142
|
-
|
143
138
|
/**
|
144
139
|
* @param {RuntimeSpec} runtime the runtime
|
145
140
|
* @returns {boolean} true, if the connection is active
|
@@ -187,6 +182,11 @@ class ModuleGraphConnection {
|
|
187
182
|
this._active = value;
|
188
183
|
}
|
189
184
|
|
185
|
+
// TODO webpack 5 remove
|
186
|
+
get active() {
|
187
|
+
throw new Error("Use getActiveState instead");
|
188
|
+
}
|
189
|
+
|
190
190
|
set active(value) {
|
191
191
|
throw new Error("Use setActive instead");
|
192
192
|
}
|