@depup/webpack 5.110.1-depup.0 → 5.111.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/changes.json +7 -11
- package/lib/APIPlugin.js +26 -11
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/Cache.js +8 -3
- package/lib/CacheFacade.js +1 -1
- package/lib/ChunkGraph.js +20 -18
- package/lib/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/CompatibilityPlugin.js +3 -4
- package/lib/Compilation.js +337 -338
- package/lib/Compiler.js +213 -51
- package/lib/ConcatenationScope.js +25 -35
- package/lib/ConstPlugin.js +16 -132
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/DependencyTemplate.js +2 -1
- package/lib/DotenvPlugin.js +64 -40
- package/lib/ErrorHelpers.js +113 -0
- package/lib/ExportsInfo.js +30 -16
- package/lib/ExternalModule.js +47 -22
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +53 -34
- package/lib/FlagDependencyUsagePlugin.js +17 -15
- package/lib/Generator.js +24 -2
- package/lib/HotModuleReplacementPlugin.js +55 -7
- package/lib/IgnorePlugin.js +1 -1
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/LoaderOptionsPlugin.js +1 -1
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +19 -10
- package/lib/ModuleGraph.js +6 -9
- package/lib/MultiCompiler.js +7 -17
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +148 -70
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +33 -3
- package/lib/RuntimeTemplate.js +1147 -847
- package/lib/SourceMapDevToolPlugin.js +54 -104
- package/lib/TemplatedPathPlugin.js +16 -59
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetBytesGenerator.js +7 -1
- package/lib/asset/AssetGenerator.js +50 -24
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/AssetSourceGenerator.js +7 -1
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/async-modules/AsyncModuleHelpers.js +10 -4
- package/lib/buildChunkGraph.js +11 -15
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +7 -8
- package/lib/cache/PackFileCacheStrategy.js +17 -19
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/config/browserslistTargetHandler.js +17 -4
- package/lib/config/defaults.js +162 -142
- package/lib/config/getClaimedAssetTypes.js +10 -11
- package/lib/config/normalization.js +100 -20
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +54 -115
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +19 -21
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +27 -11
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +92 -15
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +3 -10
- package/lib/css/CssParser.js +162 -31
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +43 -32
- package/lib/css/data.js +3526 -871
- package/lib/css/syntax.js +6455 -1237
- package/lib/debug/ProfilingPlugin.js +7 -4
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +13 -12
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +5 -5
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +32 -9
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
- package/lib/dependencies/ContextElementDependency.js +1 -1
- package/lib/dependencies/CssIcssExportDependency.js +13 -9
- package/lib/dependencies/CssIcssImportDependency.js +3 -6
- package/lib/dependencies/CssUrlDependency.js +3 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +67 -22
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -4
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +10 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +12 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +217 -34
- package/lib/dependencies/HarmonyExportInitFragment.js +110 -23
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +25 -58
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +99 -41
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +198 -25
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +117 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +136 -104
- package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
- package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
- package/lib/dependencies/ImportContextDependency.js +43 -3
- package/lib/dependencies/ImportDependency.js +8 -29
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/ImportMetaGlobHelpers.js +1 -1
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +67 -25
- package/lib/dependencies/ImportParserPlugin.js +25 -15
- package/lib/dependencies/LoaderPlugin.js +26 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RequireHeaderDependency.js +20 -21
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/URLContextDependency.js +1 -1
- package/lib/dependencies/URLDependency.js +6 -5
- package/lib/dependencies/WorkerAndWorkletPlugin.js +16 -21
- package/lib/dependencies/WorkerDependency.js +12 -18
- package/lib/dependencies/WorkletDependency.js +12 -20
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dll/DelegatedModule.js +18 -1
- package/lib/dll/DllReferencePlugin.js +11 -8
- package/lib/dll/LibManifestPlugin.js +1 -1
- package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -0
- package/lib/errors/HookWebpackError.js +3 -2
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/MissingSourceMapsWarning.js +36 -0
- package/lib/errors/ModuleParseError.js +2 -1
- package/lib/errors/UnusedAssetsWarning.js +36 -0
- package/lib/errors/UnusedFederationWarning.js +35 -0
- package/lib/errors/UnusedModulesWarning.js +38 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +21 -5
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +91 -53
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/hmr/LazyCompilationPlugin.js +3 -5
- package/lib/html/HtmlGenerator.js +72 -87
- package/lib/html/HtmlModulesPlugin.js +479 -215
- package/lib/html/HtmlParser.js +110 -147
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +142 -7
- package/lib/html/htmlMinify.js +92 -122
- package/lib/html/syntax.js +2031 -1556
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +49 -3
- package/lib/javascript/ChunkFormatHelpers.js +4 -3
- package/lib/javascript/JavascriptGenerator.js +8 -1
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +76 -80
- package/lib/javascript/JavascriptParser.js +1970 -900
- package/lib/javascript/StartupHelpers.js +27 -3
- package/lib/javascript/data.js +172 -0
- package/lib/javascript/grammar.js +5546 -0
- package/lib/javascript/parser.js +1500 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +9061 -5262
- package/lib/json/JsonGenerator.js +7 -1
- package/lib/library/ModuleLibraryPlugin.js +171 -132
- package/lib/loaders/LoaderRunner.js +170 -14
- package/lib/node/NodeWatchFileSystem.js +3 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -15
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -5
- package/lib/optimize/ConcatenatedModule.js +222 -125
- package/lib/optimize/ConstExportsPlugin.js +50 -34
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
- package/lib/optimize/InlineExports.js +20 -2
- package/lib/optimize/InnerGraphPlugin.js +7 -13
- package/lib/optimize/LimitChunkCountPlugin.js +5 -8
- package/lib/optimize/MangleExportsPlugin.js +13 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +27 -5
- package/lib/optimize/RealContentHashPlugin.js +179 -44
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -28
- package/lib/optimize/SplitChunksPlugin.js +2 -4
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/BroadContextsPlugin.js +1 -1
- package/lib/performance/CacheEffectivenessPlugin.js +7 -7
- package/lib/performance/DuplicateModulesPlugin.js +57 -13
- package/lib/performance/EvalUsagePlugin.js +5 -2
- package/lib/performance/MissingSourceMapsPlugin.js +115 -0
- package/lib/performance/PureAnnotationsPlugin.js +6 -3
- package/lib/performance/SizeLimitsPlugin.js +2 -4
- package/lib/performance/TopLevelThisPlugin.js +5 -4
- package/lib/performance/UnusedAssetsPlugin.js +109 -0
- package/lib/performance/UnusedFederationPlugin.js +147 -0
- package/lib/performance/UnusedModulesPlugin.js +141 -0
- package/lib/performance/UnusedReexportsPlugin.js +1 -55
- package/lib/performance/isOnlyReexported.js +65 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +8 -8
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ResourceHintPlugin.js +29 -35
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +16 -10
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +103 -67
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
- package/lib/runtime/BaseUriRuntimeModule.js +9 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +12 -4
- package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
- package/lib/runtime/GlobalRuntimeModule.js +11 -4
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +313 -222
- package/lib/runtime/NonceRuntimeModule.js +9 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
- package/lib/runtime/PublicPathRuntimeModule.js +9 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
- package/lib/runtime/SystemContextRuntimeModule.js +9 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
- package/lib/schemes/DataUriPlugin.js +3 -6
- package/lib/schemes/HttpUriPlugin.js +22 -5
- package/lib/schemes/VirtualUrlPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +31 -18
- package/lib/serialization/ObjectMiddleware.js +168 -139
- package/lib/sharing/ConsumeSharedPlugin.js +12 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
- package/lib/sharing/ShareRuntimeModule.js +9 -0
- package/lib/sharing/declaredShared.js +47 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +6 -5
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/typescript/TypeScriptPlugin.js +10 -13
- package/lib/url/URLParserPlugin.js +6 -8
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/SourceProcessor.js +115 -99
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/chainedImports.js +3 -4
- package/lib/util/concatenate.js +4 -4
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +2 -3
- package/lib/util/deterministicGrouping.js +8 -13
- package/lib/util/findGraphRoots.js +6 -13
- package/lib/util/fs.js +27 -1
- package/lib/util/globUtils.js +1 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +7 -1
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/semver.js +5 -3
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +7 -12
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +12 -4
- package/lib/wasm-sync/WebAssemblyGenerator.js +6 -1
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -6
- package/lib/web/FetchCompileWasmPlugin.js +4 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +55 -46
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +388 -76
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/ManifestPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/types.d.ts +1795 -608
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -10,6 +10,7 @@ const {
|
|
|
10
10
|
compareModulesByPreOrderIndexOrIdentifier
|
|
11
11
|
} = require("../util/comparators");
|
|
12
12
|
const createHash = require("../util/createHash");
|
|
13
|
+
const { fileUrlToPath } = require("../util/identifier");
|
|
13
14
|
const {
|
|
14
15
|
getFullModuleName,
|
|
15
16
|
getUsedModuleIdsAndModules
|
|
@@ -58,7 +59,7 @@ class HashedModuleIdsPlugin {
|
|
|
58
59
|
compilation.hooks.moduleIds.tap(PLUGIN_NAME, () => {
|
|
59
60
|
const chunkGraph = compilation.chunkGraph;
|
|
60
61
|
const context = this.options.context
|
|
61
|
-
? this.options.context
|
|
62
|
+
? fileUrlToPath(this.options.context)
|
|
62
63
|
: compiler.context;
|
|
63
64
|
|
|
64
65
|
const [usedIds, modules] = getUsedModuleIdsAndModules(compilation);
|
package/lib/index.js
CHANGED
|
@@ -38,7 +38,7 @@ const memoize = require("./util/memoize");
|
|
|
38
38
|
/** @typedef {import("./asset/AssetModule").AssetModuleBuildInfo} AssetModuleBuildInfo */
|
|
39
39
|
/** @typedef {import("./ChunkGroup")} ChunkGroup */
|
|
40
40
|
/** @typedef {import("./Compiler").AssetEmittedInfo} AssetEmittedInfo */
|
|
41
|
-
/** @typedef {import("./ContextModule").ContextModuleBuildInfo} ContextModuleBuildInfo */
|
|
41
|
+
/** @typedef {import("./context/ContextModule").ContextModuleBuildInfo} ContextModuleBuildInfo */
|
|
42
42
|
/** @typedef {import("./css/CssModule").CssModuleBuildInfo} CssModuleBuildInfo */
|
|
43
43
|
/** @typedef {import("./css/CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
|
|
44
44
|
/** @typedef {import("./ExternalModule").ExternalModuleBuildInfo} ExternalModuleBuildInfo */
|
|
@@ -237,10 +237,13 @@ module.exports = mergeExports(fn, {
|
|
|
237
237
|
return require("./ConcatenationScope");
|
|
238
238
|
},
|
|
239
239
|
get ContextExclusionPlugin() {
|
|
240
|
-
return require("./ContextExclusionPlugin");
|
|
240
|
+
return require("./context/ContextExclusionPlugin");
|
|
241
241
|
},
|
|
242
242
|
get ContextReplacementPlugin() {
|
|
243
|
-
return require("./ContextReplacementPlugin");
|
|
243
|
+
return require("./context/ContextReplacementPlugin");
|
|
244
|
+
},
|
|
245
|
+
get CopyPlugin() {
|
|
246
|
+
return require("./CopyPlugin");
|
|
244
247
|
},
|
|
245
248
|
get DefinePlugin() {
|
|
246
249
|
return require("./DefinePlugin");
|
|
@@ -740,3 +743,46 @@ module.exports = mergeExports(fn, {
|
|
|
740
743
|
}
|
|
741
744
|
}
|
|
742
745
|
});
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* The loader-authoring types, re-exported here because this file is what
|
|
749
|
+
* `generate-types.js` reads webpack's public type surface from
|
|
750
|
+
* @template [OptionsType={}]
|
|
751
|
+
* @template [ContextAdditions={}]
|
|
752
|
+
* @typedef {import("./loaders/LoaderRunner").LoaderModule<OptionsType, ContextAdditions>} LoaderModule
|
|
753
|
+
*/
|
|
754
|
+
|
|
755
|
+
/**
|
|
756
|
+
* @template [OptionsType={}]
|
|
757
|
+
* @template [ContextAdditions={}]
|
|
758
|
+
* @typedef {import("./loaders/LoaderRunner").RawLoaderDefinition<OptionsType, ContextAdditions>} RawLoaderDefinition
|
|
759
|
+
*/
|
|
760
|
+
|
|
761
|
+
/**
|
|
762
|
+
* @template [OptionsType={}]
|
|
763
|
+
* @template [ContextAdditions={}]
|
|
764
|
+
* @typedef {import("./loaders/LoaderRunner").LoaderDefinition<OptionsType, ContextAdditions>} LoaderDefinition
|
|
765
|
+
*/
|
|
766
|
+
|
|
767
|
+
/**
|
|
768
|
+
* @template [OptionsType={}]
|
|
769
|
+
* @template [ContextAdditions={}]
|
|
770
|
+
* @typedef {import("./loaders/LoaderRunner").LoaderDefinitionFunction<OptionsType, ContextAdditions>} LoaderDefinitionFunction
|
|
771
|
+
*/
|
|
772
|
+
|
|
773
|
+
/**
|
|
774
|
+
* @template [OptionsType={}]
|
|
775
|
+
* @template [ContextAdditions={}]
|
|
776
|
+
* @typedef {import("./loaders/LoaderRunner").PitchLoaderDefinitionFunction<OptionsType, ContextAdditions>} PitchLoaderDefinitionFunction
|
|
777
|
+
*/
|
|
778
|
+
|
|
779
|
+
/**
|
|
780
|
+
* @template [OptionsType={}]
|
|
781
|
+
* @template [ContextAdditions={}]
|
|
782
|
+
* @typedef {import("./loaders/LoaderRunner").RawLoaderDefinitionFunction<OptionsType, ContextAdditions>} RawLoaderDefinitionFunction
|
|
783
|
+
*/
|
|
784
|
+
|
|
785
|
+
/**
|
|
786
|
+
* @template OptionsType
|
|
787
|
+
* @typedef {import("./NormalModule").LoaderContext<OptionsType>} LoaderContext
|
|
788
|
+
*/
|
|
@@ -55,10 +55,11 @@ function createChunkHashHandler(name) {
|
|
|
55
55
|
hash.update(name);
|
|
56
56
|
hash.update("1");
|
|
57
57
|
if (runtimeChunk && runtimeChunk.hash) {
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
58
|
+
// WHY: any change to the runtime chunk must move this hash, and its
|
|
59
|
+
// internal implementation is not ours to depend on or inspect — the import
|
|
60
|
+
// names its hashed filename:
|
|
61
61
|
// import __webpack_require__ from "./runtime-main.e9400aee33633a3973bd.js";
|
|
62
|
+
// https://github.com/webpack/webpack/issues/19439
|
|
62
63
|
hash.update(runtimeChunk.hash);
|
|
63
64
|
}
|
|
64
65
|
updateHashForEntryStartup(hash, chunkGraph, entries, chunk);
|
|
@@ -256,6 +256,7 @@ class JavascriptGenerator extends Generator {
|
|
|
256
256
|
/** @type {NonNullable<GenerateContext["codeGenerationResults"]>} */
|
|
257
257
|
(generateContext.codeGenerationResults),
|
|
258
258
|
initFragments,
|
|
259
|
+
getData: generateContext.getData,
|
|
259
260
|
get chunkInitFragments() {
|
|
260
261
|
if (!chunkInitFragments) {
|
|
261
262
|
const data =
|
|
@@ -332,7 +333,13 @@ class JavascriptGenerator extends Generator {
|
|
|
332
333
|
* @returns {Source | null} generated code
|
|
333
334
|
*/
|
|
334
335
|
generateError(error, module, generateContext) {
|
|
335
|
-
return new RawSource(
|
|
336
|
+
return new RawSource(
|
|
337
|
+
Generator.throwBuildErrorCode(
|
|
338
|
+
error,
|
|
339
|
+
undefined,
|
|
340
|
+
generateContext.runtimeTemplate.requestShortener
|
|
341
|
+
)
|
|
342
|
+
);
|
|
336
343
|
}
|
|
337
344
|
}
|
|
338
345
|
|
|
@@ -19,6 +19,7 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
19
19
|
* Defines the build info properties specific to javascript modules.
|
|
20
20
|
* @typedef {object} KnownJavascriptModuleBuildInfo
|
|
21
21
|
* @property {string=} moduleConcatenationBailout using in CommonJs
|
|
22
|
+
* @property {string=} moduleConcatenationRootBailout what rules the module out as a concatenation root, while it may still be an inner module
|
|
22
23
|
* @property {boolean=} needCreateRequire using in APIPlugin
|
|
23
24
|
* @property {boolean=} usingPublicPathOverride module reassigns `__webpack_public_path__` at runtime, using in APIPlugin
|
|
24
25
|
* @property {Set<string>=} pureFunctions names of locally declared functions known to be free of side effects
|
|
@@ -50,34 +50,19 @@ const {
|
|
|
50
50
|
const createHash = require("../util/createHash");
|
|
51
51
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
52
52
|
const { digestNonNumericOnlyWithFull } = require("../util/nonNumericOnlyHash");
|
|
53
|
-
const
|
|
53
|
+
const { removeBOMFromResult } = require("../util/removeBOM");
|
|
54
54
|
const { intersectRuntime } = require("../util/runtime");
|
|
55
55
|
const { getAllChunks } = require("./ChunkHelpers");
|
|
56
56
|
const JavascriptGenerator = require("./JavascriptGenerator");
|
|
57
57
|
const JavascriptModule = require("./JavascriptModule");
|
|
58
58
|
const JavascriptParser = require("./JavascriptParser");
|
|
59
59
|
const analyzeScope = require("./ScopeAnalyzer");
|
|
60
|
+
const { renderAwaitedEntries } = require("./StartupHelpers");
|
|
61
|
+
const { releaseParserCaches } = require("./syntax");
|
|
60
62
|
|
|
61
63
|
/**
|
|
62
64
|
* @import {
|
|
63
|
-
* Program
|
|
64
|
-
* Node,
|
|
65
|
-
* Identifier,
|
|
66
|
-
* CatchClause,
|
|
67
|
-
* ClassDeclaration,
|
|
68
|
-
* ClassExpression,
|
|
69
|
-
* FunctionDeclaration,
|
|
70
|
-
* FunctionExpression,
|
|
71
|
-
* ArrowFunctionExpression,
|
|
72
|
-
* VariableDeclarator,
|
|
73
|
-
* VariableDeclaration,
|
|
74
|
-
* ImportDeclaration,
|
|
75
|
-
* ImportSpecifier,
|
|
76
|
-
* ImportDefaultSpecifier,
|
|
77
|
-
* ImportNamespaceSpecifier,
|
|
78
|
-
* AssignmentExpression,
|
|
79
|
-
* ForInStatement,
|
|
80
|
-
* ForOfStatement
|
|
65
|
+
* Program
|
|
81
66
|
* } from "estree"
|
|
82
67
|
*/
|
|
83
68
|
/** @import { Source } from "webpack-sources" */
|
|
@@ -93,7 +78,6 @@ const analyzeScope = require("./ScopeAnalyzer");
|
|
|
93
78
|
/** @import DependencyTemplates from "../DependencyTemplates" */
|
|
94
79
|
/** @import Entrypoint from "../Entrypoint" */
|
|
95
80
|
/** @import Module, { BuildInfo, CodeGenerationResultData } from "../Module" */
|
|
96
|
-
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
97
81
|
/** @import ModuleGraph from "../ModuleGraph" */
|
|
98
82
|
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
99
83
|
/** @import WebpackError from "../errors/WebpackError" */
|
|
@@ -347,18 +331,6 @@ const createCompilationHooks = () => ({
|
|
|
347
331
|
* @since 5.22.0
|
|
348
332
|
*/
|
|
349
333
|
inlineInRuntimeBailout: new SyncBailHook(["module", "renderContext"]),
|
|
350
|
-
/**
|
|
351
|
-
* Offers a module's rendered export-definition call to a consumer that can place
|
|
352
|
-
* it better — a library whose entry exports the same bindings natively takes it
|
|
353
|
-
* over and emits it only where the module is wrapped. Return true to take it.
|
|
354
|
-
* @type {SyncBailHook<[Module, RuntimeSpec, string, boolean], boolean | void>}
|
|
355
|
-
*/
|
|
356
|
-
onDemandExportsGeneration: new SyncBailHook([
|
|
357
|
-
"module",
|
|
358
|
-
"runtime",
|
|
359
|
-
"source",
|
|
360
|
-
"placeAtEnd"
|
|
361
|
-
]),
|
|
362
334
|
/**
|
|
363
335
|
* @type {SyncBailHook<[Module, RenderContext], string | void>}
|
|
364
336
|
* @since 5.22.0
|
|
@@ -470,6 +442,10 @@ class JavascriptModulesPlugin {
|
|
|
470
442
|
* @returns {void}
|
|
471
443
|
*/
|
|
472
444
|
apply(compiler) {
|
|
445
|
+
// the parser's shared string caches only pay off while modules parse —
|
|
446
|
+
// drop them when the build ends so an idle process retains no parser state
|
|
447
|
+
compiler.hooks.done.tap(PLUGIN_NAME, releaseParserCaches);
|
|
448
|
+
compiler.hooks.failed.tap(PLUGIN_NAME, releaseParserCaches);
|
|
473
449
|
compiler.hooks.compilation.tap(
|
|
474
450
|
PLUGIN_NAME,
|
|
475
451
|
(compilation, { normalModuleFactory }) => {
|
|
@@ -528,15 +504,8 @@ class JavascriptModulesPlugin {
|
|
|
528
504
|
|
|
529
505
|
NormalModule.getCompilationHooks(compilation).processResult.tap(
|
|
530
506
|
PLUGIN_NAME,
|
|
531
|
-
(result, module) =>
|
|
532
|
-
|
|
533
|
-
const [source, ...rest] = result;
|
|
534
|
-
|
|
535
|
-
return [removeBOM(source), ...rest];
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
return result;
|
|
539
|
-
}
|
|
507
|
+
(result, module) =>
|
|
508
|
+
module.type === type ? removeBOMFromResult(result) : result
|
|
540
509
|
);
|
|
541
510
|
}
|
|
542
511
|
|
|
@@ -1615,17 +1584,14 @@ class JavascriptModulesPlugin {
|
|
|
1615
1584
|
}
|
|
1616
1585
|
|
|
1617
1586
|
if (runtimeRequirements.has(RuntimeGlobals.makeDeferredNamespaceObject)) {
|
|
1618
|
-
//
|
|
1619
|
-
//
|
|
1620
|
-
//
|
|
1621
|
-
// is evaluated.
|
|
1587
|
+
// The deferred namespace drops its proxy handlers once the module has
|
|
1588
|
+
// initialized, which needs every deferred import of it to reach the exports
|
|
1589
|
+
// object before evaluation.
|
|
1622
1590
|
buf.push("// The deferred module cache");
|
|
1623
1591
|
buf.push(`${bootstrapCst} __webpack_module_deferred_exports__ = {};`);
|
|
1624
|
-
//
|
|
1625
|
-
//
|
|
1626
|
-
//
|
|
1627
|
-
// Cache the deferred namespace proxy here so calls from different
|
|
1628
|
-
// files share identity.
|
|
1592
|
+
// Every defer-import site for one module must yield the same Deferred
|
|
1593
|
+
// Module Namespace, distinct from any eager one, so the proxy is cached
|
|
1594
|
+
// here for call sites in different files to share.
|
|
1629
1595
|
buf.push("// The deferred namespace cache");
|
|
1630
1596
|
buf.push(
|
|
1631
1597
|
`${bootstrapCst} __webpack_module_deferred_namespace_cache__ = {};`
|
|
@@ -1687,6 +1653,27 @@ class JavascriptModulesPlugin {
|
|
|
1687
1653
|
continue;
|
|
1688
1654
|
}
|
|
1689
1655
|
}
|
|
1656
|
+
const entryOptions = chunk.getEntryOptions();
|
|
1657
|
+
const library =
|
|
1658
|
+
entryOptions && entryOptions.library !== undefined
|
|
1659
|
+
? entryOptions.library
|
|
1660
|
+
: runtimeTemplate.outputOptions.library;
|
|
1661
|
+
// A module library awaits the entry itself, in `ModuleLibraryPlugin`.
|
|
1662
|
+
const awaitedByLibrary =
|
|
1663
|
+
library !== undefined && library.type === "module";
|
|
1664
|
+
// `await` is legal only at an ESM chunk's top level, never in the
|
|
1665
|
+
// startup function below, and only where the target parses it.
|
|
1666
|
+
const canAwaitEntry =
|
|
1667
|
+
runtimeTemplate.isModule() &&
|
|
1668
|
+
runtimeTemplate.supportsTopLevelAwait() &&
|
|
1669
|
+
!awaitedByLibrary &&
|
|
1670
|
+
!runtimeRequirements.has(RuntimeGlobals.startup) &&
|
|
1671
|
+
!(
|
|
1672
|
+
runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|
|
1673
|
+
runtimeRequirements.has(RuntimeGlobals.startupOnlyAfter)
|
|
1674
|
+
);
|
|
1675
|
+
/** @type {string[]} */
|
|
1676
|
+
const awaitedEntries = [];
|
|
1690
1677
|
let i = jsEntries.length;
|
|
1691
1678
|
for (const [entryModule, entrypoint] of jsEntries) {
|
|
1692
1679
|
const chunks =
|
|
@@ -1794,30 +1781,45 @@ class JavascriptModulesPlugin {
|
|
|
1794
1781
|
result.allowInlineStartup = false;
|
|
1795
1782
|
}
|
|
1796
1783
|
|
|
1797
|
-
// `__webpack_exports__` may be reassigned later
|
|
1798
|
-
// `onChunksLoaded` wrapper
|
|
1799
|
-
//
|
|
1800
|
-
// bridge reassigns `__webpack_exports__` to the awaited
|
|
1801
|
-
// value), or by other downstream codegen. Always declare
|
|
1802
|
-
// with `let` (or `var` if `let` is unsupported) so
|
|
1803
|
-
// reassignment is allowed.
|
|
1784
|
+
// `__webpack_exports__` may be reassigned later, by the
|
|
1785
|
+
// `onChunksLoaded` wrapper, a top-level `await` bridge or other
|
|
1786
|
+
// codegen, so it is never declared as a constant.
|
|
1804
1787
|
const exportsDecl = runtimeTemplate.renderLet();
|
|
1805
1788
|
if (chunks.length > 0) {
|
|
1789
|
+
const awaitEntry =
|
|
1790
|
+
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1791
|
+
const target =
|
|
1792
|
+
i === 0
|
|
1793
|
+
? RuntimeGlobals.exports
|
|
1794
|
+
: `${RuntimeGlobals.exports}_${i}`;
|
|
1795
|
+
// The wrapper hands back nothing until the flush below runs the
|
|
1796
|
+
// entry, so an awaited one is caught by the entry call itself.
|
|
1797
|
+
if (awaitEntry && i !== 0) buf2.push(`${exportsDecl} ${target};`);
|
|
1798
|
+
const entryCall = `${RuntimeGlobals.require}(${moduleIdExpr})`;
|
|
1806
1799
|
buf2.push(
|
|
1807
1800
|
`${i === 0 ? `${exportsDecl} ${RuntimeGlobals.exports} = ` : ""}${
|
|
1808
1801
|
RuntimeGlobals.onChunksLoaded
|
|
1809
1802
|
}(undefined, ${JSON.stringify(
|
|
1810
1803
|
chunks.map((c) => c.id)
|
|
1811
1804
|
)}, ${runtimeTemplate.returningFunction(
|
|
1812
|
-
|
|
1805
|
+
awaitEntry ? `(${target} = ${entryCall})` : entryCall
|
|
1813
1806
|
)})`
|
|
1814
1807
|
);
|
|
1808
|
+
if (awaitEntry) awaitedEntries.push(target);
|
|
1815
1809
|
} else if (useRequire) {
|
|
1810
|
+
// An async entry nobody awaits settles after the bundle did,
|
|
1811
|
+
// which orphans its rejection.
|
|
1812
|
+
const awaitEntry =
|
|
1813
|
+
canAwaitEntry && moduleGraph.isAsync(entryModule);
|
|
1814
|
+
const target =
|
|
1815
|
+
i === 0
|
|
1816
|
+
? RuntimeGlobals.exports
|
|
1817
|
+
: `${RuntimeGlobals.exports}_${i}`;
|
|
1818
|
+
const needsDecl = i === 0 || awaitEntry;
|
|
1816
1819
|
buf2.push(
|
|
1817
|
-
`${
|
|
1818
|
-
RuntimeGlobals.require
|
|
1819
|
-
}(${moduleIdExpr});`
|
|
1820
|
+
`${needsDecl ? `${exportsDecl} ${target} = ` : ""}${RuntimeGlobals.require}(${moduleIdExpr});`
|
|
1820
1821
|
);
|
|
1822
|
+
if (awaitEntry) awaitedEntries.push(target);
|
|
1821
1823
|
} else {
|
|
1822
1824
|
if (i === 0) {
|
|
1823
1825
|
buf2.push(`${exportsDecl} ${RuntimeGlobals.exports} = {};`);
|
|
@@ -1860,6 +1862,7 @@ class JavascriptModulesPlugin {
|
|
|
1860
1862
|
`${RuntimeGlobals.exports} = ${RuntimeGlobals.onChunksLoaded}(${RuntimeGlobals.exports});`
|
|
1861
1863
|
);
|
|
1862
1864
|
}
|
|
1865
|
+
buf2.push(...renderAwaitedEntries(awaitedEntries));
|
|
1863
1866
|
if (
|
|
1864
1867
|
runtimeRequirements.has(RuntimeGlobals.startup) ||
|
|
1865
1868
|
(runtimeRequirements.has(RuntimeGlobals.startupOnlyBefore) &&
|
|
@@ -1989,11 +1992,9 @@ class JavascriptModulesPlugin {
|
|
|
1989
1992
|
const needModuleDefer = runtimeRequirements.has(
|
|
1990
1993
|
RuntimeGlobals.makeDeferredNamespaceObject
|
|
1991
1994
|
);
|
|
1992
|
-
// Both deferred-namespace runtimes re-invoke `__webpack_require__` on
|
|
1993
|
-
//
|
|
1994
|
-
//
|
|
1995
|
-
// does not use `__webpack_module_deferred_exports__`, so it is tracked
|
|
1996
|
-
// separately from `needModuleDefer`.
|
|
1995
|
+
// Both deferred-namespace runtimes re-invoke `__webpack_require__` on access,
|
|
1996
|
+
// so an evaluation error must be retained and re-thrown. The optimized one
|
|
1997
|
+
// skips the deferred exports object, hence the separate flag.
|
|
1997
1998
|
const needModuleDeferAny =
|
|
1998
1999
|
needModuleDefer ||
|
|
1999
2000
|
runtimeRequirements.has(
|
|
@@ -2121,10 +2122,9 @@ class JavascriptModulesPlugin {
|
|
|
2121
2122
|
allModules.every((m) => /** @type {BuildInfo} */ (m.buildInfo).strict);
|
|
2122
2123
|
const isMultipleEntries = inlinedModules.size > 1;
|
|
2123
2124
|
const singleEntryWithModules = inlinedModules.size === 1 && hasChunkModules;
|
|
2124
|
-
//
|
|
2125
|
-
//
|
|
2126
|
-
//
|
|
2127
|
-
// ('it uses a non-standard name for the exports') is not handled here.
|
|
2125
|
+
// Runs before the IIFE reason is calculated, and only for the cases whose
|
|
2126
|
+
// reason it can remove: several inlined entries, or one beside other chunk
|
|
2127
|
+
// modules. A non-standard exports name is not handled here.
|
|
2128
2128
|
if (innerStrict || (!isMultipleEntries && !singleEntryWithModules)) {
|
|
2129
2129
|
return false;
|
|
2130
2130
|
}
|
|
@@ -2183,11 +2183,9 @@ class JavascriptModulesPlugin {
|
|
|
2183
2183
|
}
|
|
2184
2184
|
}
|
|
2185
2185
|
|
|
2186
|
-
//
|
|
2187
|
-
//
|
|
2188
|
-
//
|
|
2189
|
-
// declarations, or a reserved name, no renaming is needed and the entries
|
|
2190
|
-
// don't have to be parsed at all.
|
|
2186
|
+
// Codegen reports each inlined entry's rendered top-level declarations and
|
|
2187
|
+
// free names, so where nothing collides there is no renaming to do and the
|
|
2188
|
+
// entries need not be parsed at all.
|
|
2191
2189
|
fastPath: {
|
|
2192
2190
|
const { codeGenerationResults, chunk } = renderContext;
|
|
2193
2191
|
/** @type {Set<string>} */
|
|
@@ -2272,11 +2270,9 @@ class JavascriptModulesPlugin {
|
|
|
2272
2270
|
}
|
|
2273
2271
|
}
|
|
2274
2272
|
|
|
2275
|
-
//
|
|
2276
|
-
//
|
|
2277
|
-
//
|
|
2278
|
-
// reference, or with a reserved name, so the modules can be emitted without a
|
|
2279
|
-
// per-entry IIFE.
|
|
2273
|
+
// Several inlined entries share the chunk's startup scope, so any top-level
|
|
2274
|
+
// declaration colliding with another's declaration, any module's free
|
|
2275
|
+
// reference or a reserved name is renamed, sparing them a per-entry IIFE.
|
|
2280
2276
|
if (isMultipleEntries) {
|
|
2281
2277
|
/** @type {Set<string>} */
|
|
2282
2278
|
const allUsedNames = new Set(nonInlinedModuleThroughIdentifiers);
|