webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -11,6 +11,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
11
11
|
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
|
12
12
|
const WebpackError = require("../WebpackError");
|
|
13
13
|
const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
|
|
14
|
+
const { VariableInfo } = require("../javascript/JavascriptParser");
|
|
14
15
|
const {
|
|
15
16
|
evaluateToIdentifier,
|
|
16
17
|
evaluateToString,
|
|
@@ -37,10 +38,20 @@ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency
|
|
|
37
38
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
38
39
|
/** @typedef {import("../javascript/JavascriptParser").ImportSource} ImportSource */
|
|
39
40
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
41
|
+
/** @typedef {import("../javascript/JavascriptParser").Members} Members */
|
|
42
|
+
/** @typedef {import("../javascript/JavascriptParser").CalleeMembers} CalleeMembers */
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @typedef {object} CommonJsImportSettings
|
|
46
|
+
* @property {string=} name
|
|
47
|
+
* @property {string} context
|
|
48
|
+
*/
|
|
40
49
|
|
|
41
50
|
const createRequireSpecifierTag = Symbol("createRequire");
|
|
42
51
|
const createdRequireIdentifierTag = Symbol("createRequire()");
|
|
43
52
|
|
|
53
|
+
const PLUGIN_NAME = "CommonJsImportsParserPlugin";
|
|
54
|
+
|
|
44
55
|
class CommonJsImportsParserPlugin {
|
|
45
56
|
/**
|
|
46
57
|
* @param {JavascriptParserOptions} options parser options
|
|
@@ -55,10 +66,11 @@ class CommonJsImportsParserPlugin {
|
|
|
55
66
|
*/
|
|
56
67
|
apply(parser) {
|
|
57
68
|
const options = this.options;
|
|
58
|
-
|
|
59
69
|
const getContext = () => {
|
|
60
70
|
if (parser.currentTagData) {
|
|
61
|
-
const { context } =
|
|
71
|
+
const { context } =
|
|
72
|
+
/** @type {CommonJsImportSettings} */
|
|
73
|
+
(parser.currentTagData);
|
|
62
74
|
return context;
|
|
63
75
|
}
|
|
64
76
|
};
|
|
@@ -66,38 +78,38 @@ class CommonJsImportsParserPlugin {
|
|
|
66
78
|
// #region metadata
|
|
67
79
|
/**
|
|
68
80
|
* @param {string} expression expression
|
|
69
|
-
* @param {() =>
|
|
81
|
+
* @param {() => Members} getMembers get members
|
|
70
82
|
*/
|
|
71
83
|
const tapRequireExpression = (expression, getMembers) => {
|
|
72
84
|
parser.hooks.typeof
|
|
73
85
|
.for(expression)
|
|
74
86
|
.tap(
|
|
75
|
-
|
|
87
|
+
PLUGIN_NAME,
|
|
76
88
|
toConstantDependency(parser, JSON.stringify("function"))
|
|
77
89
|
);
|
|
78
90
|
parser.hooks.evaluateTypeof
|
|
79
91
|
.for(expression)
|
|
80
|
-
.tap(
|
|
92
|
+
.tap(PLUGIN_NAME, evaluateToString("function"));
|
|
81
93
|
parser.hooks.evaluateIdentifier
|
|
82
94
|
.for(expression)
|
|
83
95
|
.tap(
|
|
84
|
-
|
|
96
|
+
PLUGIN_NAME,
|
|
85
97
|
evaluateToIdentifier(expression, "require", getMembers, true)
|
|
86
98
|
);
|
|
87
99
|
};
|
|
88
100
|
/**
|
|
89
101
|
* @param {string | symbol} tag tag
|
|
90
102
|
*/
|
|
91
|
-
const tapRequireExpressionTag = tag => {
|
|
103
|
+
const tapRequireExpressionTag = (tag) => {
|
|
92
104
|
parser.hooks.typeof
|
|
93
105
|
.for(tag)
|
|
94
106
|
.tap(
|
|
95
|
-
|
|
107
|
+
PLUGIN_NAME,
|
|
96
108
|
toConstantDependency(parser, JSON.stringify("function"))
|
|
97
109
|
);
|
|
98
110
|
parser.hooks.evaluateTypeof
|
|
99
111
|
.for(tag)
|
|
100
|
-
.tap(
|
|
112
|
+
.tap(PLUGIN_NAME, evaluateToString("function"));
|
|
101
113
|
};
|
|
102
114
|
tapRequireExpression("require", () => []);
|
|
103
115
|
tapRequireExpression("require.resolve", () => ["resolve"]);
|
|
@@ -105,30 +117,19 @@ class CommonJsImportsParserPlugin {
|
|
|
105
117
|
// #endregion
|
|
106
118
|
|
|
107
119
|
// Weird stuff //
|
|
108
|
-
parser.hooks.assign
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return true;
|
|
116
|
-
});
|
|
120
|
+
parser.hooks.assign.for("require").tap(PLUGIN_NAME, (expr) => {
|
|
121
|
+
// to not leak to global "require", we need to define a local require here.
|
|
122
|
+
const dep = new ConstDependency("var require;", 0);
|
|
123
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
|
124
|
+
parser.state.module.addPresentationalDependency(dep);
|
|
125
|
+
return true;
|
|
126
|
+
});
|
|
117
127
|
|
|
118
128
|
// #region Unsupported
|
|
119
|
-
parser.hooks.expression
|
|
120
|
-
.for("require.main")
|
|
121
|
-
.tap(
|
|
122
|
-
"CommonJsImportsParserPlugin",
|
|
123
|
-
expressionIsUnsupported(
|
|
124
|
-
parser,
|
|
125
|
-
"require.main is not supported by webpack."
|
|
126
|
-
)
|
|
127
|
-
);
|
|
128
129
|
parser.hooks.call
|
|
129
130
|
.for("require.main.require")
|
|
130
131
|
.tap(
|
|
131
|
-
|
|
132
|
+
PLUGIN_NAME,
|
|
132
133
|
expressionIsUnsupported(
|
|
133
134
|
parser,
|
|
134
135
|
"require.main.require is not supported by webpack."
|
|
@@ -137,7 +138,7 @@ class CommonJsImportsParserPlugin {
|
|
|
137
138
|
parser.hooks.expression
|
|
138
139
|
.for("module.parent.require")
|
|
139
140
|
.tap(
|
|
140
|
-
|
|
141
|
+
PLUGIN_NAME,
|
|
141
142
|
expressionIsUnsupported(
|
|
142
143
|
parser,
|
|
143
144
|
"module.parent.require is not supported by webpack."
|
|
@@ -146,7 +147,7 @@ class CommonJsImportsParserPlugin {
|
|
|
146
147
|
parser.hooks.call
|
|
147
148
|
.for("module.parent.require")
|
|
148
149
|
.tap(
|
|
149
|
-
|
|
150
|
+
PLUGIN_NAME,
|
|
150
151
|
expressionIsUnsupported(
|
|
151
152
|
parser,
|
|
152
153
|
"module.parent.require is not supported by webpack."
|
|
@@ -159,7 +160,7 @@ class CommonJsImportsParserPlugin {
|
|
|
159
160
|
* @param {Expression} expr expression
|
|
160
161
|
* @returns {boolean} true when set undefined
|
|
161
162
|
*/
|
|
162
|
-
const defineUndefined = expr => {
|
|
163
|
+
const defineUndefined = (expr) => {
|
|
163
164
|
// To avoid "not defined" error, replace the value with undefined
|
|
164
165
|
const dep = new ConstDependency(
|
|
165
166
|
"undefined",
|
|
@@ -169,12 +170,8 @@ class CommonJsImportsParserPlugin {
|
|
|
169
170
|
parser.state.module.addPresentationalDependency(dep);
|
|
170
171
|
return false;
|
|
171
172
|
};
|
|
172
|
-
parser.hooks.canRename
|
|
173
|
-
|
|
174
|
-
.tap("CommonJsImportsParserPlugin", () => true);
|
|
175
|
-
parser.hooks.rename
|
|
176
|
-
.for("require")
|
|
177
|
-
.tap("CommonJsImportsParserPlugin", defineUndefined);
|
|
173
|
+
parser.hooks.canRename.for("require").tap(PLUGIN_NAME, () => true);
|
|
174
|
+
parser.hooks.rename.for("require").tap(PLUGIN_NAME, defineUndefined);
|
|
178
175
|
// #endregion
|
|
179
176
|
|
|
180
177
|
// #region Inspection
|
|
@@ -188,9 +185,7 @@ class CommonJsImportsParserPlugin {
|
|
|
188
185
|
]
|
|
189
186
|
);
|
|
190
187
|
|
|
191
|
-
parser.hooks.expression
|
|
192
|
-
.for("require.cache")
|
|
193
|
-
.tap("CommonJsImportsParserPlugin", requireCache);
|
|
188
|
+
parser.hooks.expression.for("require.cache").tap(PLUGIN_NAME, requireCache);
|
|
194
189
|
// #endregion
|
|
195
190
|
|
|
196
191
|
// #region Require as expression
|
|
@@ -198,12 +193,12 @@ class CommonJsImportsParserPlugin {
|
|
|
198
193
|
* @param {Expression} expr expression
|
|
199
194
|
* @returns {boolean} true when handled
|
|
200
195
|
*/
|
|
201
|
-
const requireAsExpressionHandler = expr => {
|
|
196
|
+
const requireAsExpressionHandler = (expr) => {
|
|
202
197
|
const dep = new CommonJsRequireContextDependency(
|
|
203
198
|
{
|
|
204
|
-
request: options.unknownContextRequest,
|
|
205
|
-
recursive: options.unknownContextRecursive,
|
|
206
|
-
regExp: options.unknownContextRegExp,
|
|
199
|
+
request: /** @type {string} */ (options.unknownContextRequest),
|
|
200
|
+
recursive: /** @type {boolean} */ (options.unknownContextRecursive),
|
|
201
|
+
regExp: /** @type {RegExp} */ (options.unknownContextRegExp),
|
|
207
202
|
mode: "sync"
|
|
208
203
|
},
|
|
209
204
|
/** @type {Range} */ (expr.range),
|
|
@@ -221,7 +216,7 @@ class CommonJsImportsParserPlugin {
|
|
|
221
216
|
};
|
|
222
217
|
parser.hooks.expression
|
|
223
218
|
.for("require")
|
|
224
|
-
.tap(
|
|
219
|
+
.tap(PLUGIN_NAME, requireAsExpressionHandler);
|
|
225
220
|
// #endregion
|
|
226
221
|
|
|
227
222
|
// #region Require
|
|
@@ -272,7 +267,7 @@ class CommonJsImportsParserPlugin {
|
|
|
272
267
|
* @param {boolean} callNew true, when require is called with new
|
|
273
268
|
* @returns {(expr: CallExpression | NewExpression) => (boolean | void)} handler
|
|
274
269
|
*/
|
|
275
|
-
const createRequireHandler = callNew => expr => {
|
|
270
|
+
const createRequireHandler = (callNew) => (expr) => {
|
|
276
271
|
if (options.commonjsMagicComments) {
|
|
277
272
|
const { options: requireOptions, errors: commentErrors } =
|
|
278
273
|
parser.parseCommentOptions(/** @type {Range} */ (expr.range));
|
|
@@ -356,24 +351,24 @@ class CommonJsImportsParserPlugin {
|
|
|
356
351
|
};
|
|
357
352
|
parser.hooks.call
|
|
358
353
|
.for("require")
|
|
359
|
-
.tap(
|
|
354
|
+
.tap(PLUGIN_NAME, createRequireHandler(false));
|
|
360
355
|
parser.hooks.new
|
|
361
356
|
.for("require")
|
|
362
|
-
.tap(
|
|
357
|
+
.tap(PLUGIN_NAME, createRequireHandler(true));
|
|
363
358
|
parser.hooks.call
|
|
364
359
|
.for("module.require")
|
|
365
|
-
.tap(
|
|
360
|
+
.tap(PLUGIN_NAME, createRequireHandler(false));
|
|
366
361
|
parser.hooks.new
|
|
367
362
|
.for("module.require")
|
|
368
|
-
.tap(
|
|
363
|
+
.tap(PLUGIN_NAME, createRequireHandler(true));
|
|
369
364
|
// #endregion
|
|
370
365
|
|
|
371
366
|
// #region Require with property access
|
|
372
367
|
/**
|
|
373
368
|
* @param {Expression} expr expression
|
|
374
|
-
* @param {
|
|
369
|
+
* @param {CalleeMembers} calleeMembers callee members
|
|
375
370
|
* @param {CallExpression} callExpr call expression
|
|
376
|
-
* @param {
|
|
371
|
+
* @param {Members} members members
|
|
377
372
|
* @param {Range[]} memberRanges member ranges
|
|
378
373
|
* @returns {boolean | void} true when handled
|
|
379
374
|
*/
|
|
@@ -407,9 +402,9 @@ class CommonJsImportsParserPlugin {
|
|
|
407
402
|
};
|
|
408
403
|
/**
|
|
409
404
|
* @param {CallExpression} expr expression
|
|
410
|
-
* @param {
|
|
405
|
+
* @param {CalleeMembers} calleeMembers callee members
|
|
411
406
|
* @param {CallExpression} callExpr call expression
|
|
412
|
-
* @param {
|
|
407
|
+
* @param {Members} members members
|
|
413
408
|
* @param {Range[]} memberRanges member ranges
|
|
414
409
|
* @returns {boolean | void} true when handled
|
|
415
410
|
*/
|
|
@@ -445,16 +440,16 @@ class CommonJsImportsParserPlugin {
|
|
|
445
440
|
};
|
|
446
441
|
parser.hooks.memberChainOfCallMemberChain
|
|
447
442
|
.for("require")
|
|
448
|
-
.tap(
|
|
443
|
+
.tap(PLUGIN_NAME, chainHandler);
|
|
449
444
|
parser.hooks.memberChainOfCallMemberChain
|
|
450
445
|
.for("module.require")
|
|
451
|
-
.tap(
|
|
446
|
+
.tap(PLUGIN_NAME, chainHandler);
|
|
452
447
|
parser.hooks.callMemberChainOfCallMemberChain
|
|
453
448
|
.for("require")
|
|
454
|
-
.tap(
|
|
449
|
+
.tap(PLUGIN_NAME, callChainHandler);
|
|
455
450
|
parser.hooks.callMemberChainOfCallMemberChain
|
|
456
451
|
.for("module.require")
|
|
457
|
-
.tap(
|
|
452
|
+
.tap(PLUGIN_NAME, callChainHandler);
|
|
458
453
|
// #endregion
|
|
459
454
|
|
|
460
455
|
// #region Require.resolve
|
|
@@ -464,6 +459,36 @@ class CommonJsImportsParserPlugin {
|
|
|
464
459
|
* @returns {boolean | void} true when handled
|
|
465
460
|
*/
|
|
466
461
|
const processResolve = (expr, weak) => {
|
|
462
|
+
if (!weak && options.commonjsMagicComments) {
|
|
463
|
+
const { options: requireOptions, errors: commentErrors } =
|
|
464
|
+
parser.parseCommentOptions(/** @type {Range} */ (expr.range));
|
|
465
|
+
|
|
466
|
+
if (commentErrors) {
|
|
467
|
+
for (const e of commentErrors) {
|
|
468
|
+
const { comment } = e;
|
|
469
|
+
parser.state.module.addWarning(
|
|
470
|
+
new CommentCompilationWarning(
|
|
471
|
+
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
472
|
+
/** @type {DependencyLocation} */ (comment.loc)
|
|
473
|
+
)
|
|
474
|
+
);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
if (requireOptions && requireOptions.webpackIgnore !== undefined) {
|
|
478
|
+
if (typeof requireOptions.webpackIgnore !== "boolean") {
|
|
479
|
+
parser.state.module.addWarning(
|
|
480
|
+
new UnsupportedFeatureWarning(
|
|
481
|
+
`\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
|
|
482
|
+
/** @type {DependencyLocation} */ (expr.loc)
|
|
483
|
+
)
|
|
484
|
+
);
|
|
485
|
+
} else if (requireOptions.webpackIgnore) {
|
|
486
|
+
// Do not instrument `require()` if `webpackIgnore` is `true`
|
|
487
|
+
return true;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
467
492
|
if (expr.arguments.length !== 1) return;
|
|
468
493
|
const param = parser.evaluateExpression(expr.arguments[0]);
|
|
469
494
|
if (param.isConditional()) {
|
|
@@ -542,10 +567,10 @@ class CommonJsImportsParserPlugin {
|
|
|
542
567
|
|
|
543
568
|
parser.hooks.call
|
|
544
569
|
.for("require.resolve")
|
|
545
|
-
.tap(
|
|
570
|
+
.tap(PLUGIN_NAME, (expr) => processResolve(expr, false));
|
|
546
571
|
parser.hooks.call
|
|
547
572
|
.for("require.resolveWeak")
|
|
548
|
-
.tap(
|
|
573
|
+
.tap(PLUGIN_NAME, (expr) => processResolve(expr, true));
|
|
549
574
|
// #endregion
|
|
550
575
|
|
|
551
576
|
// #region Create require
|
|
@@ -582,7 +607,7 @@ class CommonJsImportsParserPlugin {
|
|
|
582
607
|
tapRequireExpressionTag(createRequireSpecifierTag);
|
|
583
608
|
parser.hooks.evaluateCallExpression
|
|
584
609
|
.for(createRequireSpecifierTag)
|
|
585
|
-
.tap(
|
|
610
|
+
.tap(PLUGIN_NAME, (expr) => {
|
|
586
611
|
const context = parseCreateRequireArguments(expr);
|
|
587
612
|
if (context === undefined) return;
|
|
588
613
|
const ident = parser.evaluatedVariable({
|
|
@@ -598,7 +623,7 @@ class CommonJsImportsParserPlugin {
|
|
|
598
623
|
});
|
|
599
624
|
parser.hooks.unhandledExpressionMemberChain
|
|
600
625
|
.for(createdRequireIdentifierTag)
|
|
601
|
-
.tap(
|
|
626
|
+
.tap(PLUGIN_NAME, (expr, members) =>
|
|
602
627
|
expressionIsUnsupported(
|
|
603
628
|
parser,
|
|
604
629
|
`createRequire().${members.join(".")} is not supported by webpack.`
|
|
@@ -606,24 +631,24 @@ class CommonJsImportsParserPlugin {
|
|
|
606
631
|
);
|
|
607
632
|
parser.hooks.canRename
|
|
608
633
|
.for(createdRequireIdentifierTag)
|
|
609
|
-
.tap(
|
|
634
|
+
.tap(PLUGIN_NAME, () => true);
|
|
610
635
|
parser.hooks.canRename
|
|
611
636
|
.for(createRequireSpecifierTag)
|
|
612
|
-
.tap(
|
|
637
|
+
.tap(PLUGIN_NAME, () => true);
|
|
613
638
|
parser.hooks.rename
|
|
614
639
|
.for(createRequireSpecifierTag)
|
|
615
|
-
.tap(
|
|
640
|
+
.tap(PLUGIN_NAME, defineUndefined);
|
|
616
641
|
parser.hooks.expression
|
|
617
642
|
.for(createdRequireIdentifierTag)
|
|
618
|
-
.tap(
|
|
643
|
+
.tap(PLUGIN_NAME, requireAsExpressionHandler);
|
|
619
644
|
parser.hooks.call
|
|
620
645
|
.for(createdRequireIdentifierTag)
|
|
621
|
-
.tap(
|
|
646
|
+
.tap(PLUGIN_NAME, createRequireHandler(false));
|
|
622
647
|
/**
|
|
623
648
|
* @param {CallExpression} expr call expression
|
|
624
649
|
* @returns {string | void} context
|
|
625
650
|
*/
|
|
626
|
-
const parseCreateRequireArguments = expr => {
|
|
651
|
+
const parseCreateRequireArguments = (expr) => {
|
|
627
652
|
const args = expr.arguments;
|
|
628
653
|
if (args.length !== 1) {
|
|
629
654
|
const err = new WebpackError(
|
|
@@ -652,7 +677,7 @@ class CommonJsImportsParserPlugin {
|
|
|
652
677
|
|
|
653
678
|
parser.hooks.import.tap(
|
|
654
679
|
{
|
|
655
|
-
name:
|
|
680
|
+
name: PLUGIN_NAME,
|
|
656
681
|
stage: -10
|
|
657
682
|
},
|
|
658
683
|
(statement, source) => {
|
|
@@ -662,8 +687,9 @@ class CommonJsImportsParserPlugin {
|
|
|
662
687
|
statement.specifiers[0].type !== "ImportSpecifier" ||
|
|
663
688
|
statement.specifiers[0].imported.type !== "Identifier" ||
|
|
664
689
|
statement.specifiers[0].imported.name !== specifierName
|
|
665
|
-
)
|
|
690
|
+
) {
|
|
666
691
|
return;
|
|
692
|
+
}
|
|
667
693
|
// clear for 'import { createRequire as x } from "module"'
|
|
668
694
|
// if any other specifier was used import module
|
|
669
695
|
const clearDep = new ConstDependency(
|
|
@@ -680,7 +706,7 @@ class CommonJsImportsParserPlugin {
|
|
|
680
706
|
);
|
|
681
707
|
parser.hooks.importSpecifier.tap(
|
|
682
708
|
{
|
|
683
|
-
name:
|
|
709
|
+
name: PLUGIN_NAME,
|
|
684
710
|
stage: -10
|
|
685
711
|
},
|
|
686
712
|
(statement, source, id, name) => {
|
|
@@ -689,70 +715,62 @@ class CommonJsImportsParserPlugin {
|
|
|
689
715
|
return true;
|
|
690
716
|
}
|
|
691
717
|
);
|
|
692
|
-
parser.hooks.preDeclarator.tap(
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
)
|
|
701
|
-
return;
|
|
702
|
-
const variableInfo =
|
|
703
|
-
/** @type {TODO} */
|
|
704
|
-
(parser.getVariableInfo(declarator.init.callee.name));
|
|
705
|
-
if (
|
|
706
|
-
variableInfo &&
|
|
707
|
-
variableInfo.tagInfo &&
|
|
708
|
-
variableInfo.tagInfo.tag === createRequireSpecifierTag
|
|
709
|
-
) {
|
|
710
|
-
const context = parseCreateRequireArguments(declarator.init);
|
|
711
|
-
if (context === undefined) return;
|
|
712
|
-
parser.tagVariable(declarator.id.name, createdRequireIdentifierTag, {
|
|
713
|
-
name: declarator.id.name,
|
|
714
|
-
context
|
|
715
|
-
});
|
|
716
|
-
return true;
|
|
717
|
-
}
|
|
718
|
+
parser.hooks.preDeclarator.tap(PLUGIN_NAME, (declarator) => {
|
|
719
|
+
if (
|
|
720
|
+
declarator.id.type !== "Identifier" ||
|
|
721
|
+
!declarator.init ||
|
|
722
|
+
declarator.init.type !== "CallExpression" ||
|
|
723
|
+
declarator.init.callee.type !== "Identifier"
|
|
724
|
+
) {
|
|
725
|
+
return;
|
|
718
726
|
}
|
|
719
|
-
|
|
727
|
+
const variableInfo = parser.getVariableInfo(declarator.init.callee.name);
|
|
728
|
+
if (
|
|
729
|
+
variableInfo instanceof VariableInfo &&
|
|
730
|
+
variableInfo.tagInfo &&
|
|
731
|
+
variableInfo.tagInfo.tag === createRequireSpecifierTag
|
|
732
|
+
) {
|
|
733
|
+
const context = parseCreateRequireArguments(declarator.init);
|
|
734
|
+
if (context === undefined) return;
|
|
735
|
+
parser.tagVariable(declarator.id.name, createdRequireIdentifierTag, {
|
|
736
|
+
name: declarator.id.name,
|
|
737
|
+
context
|
|
738
|
+
});
|
|
739
|
+
return true;
|
|
740
|
+
}
|
|
741
|
+
});
|
|
720
742
|
|
|
721
743
|
parser.hooks.memberChainOfCallMemberChain
|
|
722
744
|
.for(createRequireSpecifierTag)
|
|
723
|
-
.tap(
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
)
|
|
731
|
-
return;
|
|
732
|
-
// createRequire().cache
|
|
733
|
-
const context = parseCreateRequireArguments(callExpr);
|
|
734
|
-
if (context === undefined) return;
|
|
735
|
-
return requireCache(expr);
|
|
745
|
+
.tap(PLUGIN_NAME, (expr, calleeMembers, callExpr, members) => {
|
|
746
|
+
if (
|
|
747
|
+
calleeMembers.length !== 0 ||
|
|
748
|
+
members.length !== 1 ||
|
|
749
|
+
members[0] !== "cache"
|
|
750
|
+
) {
|
|
751
|
+
return;
|
|
736
752
|
}
|
|
737
|
-
|
|
753
|
+
// createRequire().cache
|
|
754
|
+
const context = parseCreateRequireArguments(callExpr);
|
|
755
|
+
if (context === undefined) return;
|
|
756
|
+
return requireCache(expr);
|
|
757
|
+
});
|
|
738
758
|
parser.hooks.callMemberChainOfCallMemberChain
|
|
739
759
|
.for(createRequireSpecifierTag)
|
|
740
|
-
.tap(
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
)
|
|
748
|
-
return;
|
|
749
|
-
// createRequire().resolve()
|
|
750
|
-
return processResolve(expr, false);
|
|
760
|
+
.tap(PLUGIN_NAME, (expr, calleeMembers, innerCallExpression, members) => {
|
|
761
|
+
if (
|
|
762
|
+
calleeMembers.length !== 0 ||
|
|
763
|
+
members.length !== 1 ||
|
|
764
|
+
members[0] !== "resolve"
|
|
765
|
+
) {
|
|
766
|
+
return;
|
|
751
767
|
}
|
|
752
|
-
|
|
768
|
+
// createRequire().resolve()
|
|
769
|
+
return processResolve(expr, false);
|
|
770
|
+
});
|
|
753
771
|
parser.hooks.expressionMemberChain
|
|
754
772
|
.for(createdRequireIdentifierTag)
|
|
755
|
-
.tap(
|
|
773
|
+
.tap(PLUGIN_NAME, (expr, members) => {
|
|
756
774
|
// require.cache
|
|
757
775
|
if (members.length === 1 && members[0] === "cache") {
|
|
758
776
|
return requireCache(expr);
|
|
@@ -760,7 +778,7 @@ class CommonJsImportsParserPlugin {
|
|
|
760
778
|
});
|
|
761
779
|
parser.hooks.callMemberChain
|
|
762
780
|
.for(createdRequireIdentifierTag)
|
|
763
|
-
.tap(
|
|
781
|
+
.tap(PLUGIN_NAME, (expr, members) => {
|
|
764
782
|
// require.resolve()
|
|
765
783
|
if (members.length === 1 && members[0] === "resolve") {
|
|
766
784
|
return processResolve(expr, false);
|
|
@@ -768,7 +786,7 @@ class CommonJsImportsParserPlugin {
|
|
|
768
786
|
});
|
|
769
787
|
parser.hooks.call
|
|
770
788
|
.for(createRequireSpecifierTag)
|
|
771
|
-
.tap(
|
|
789
|
+
.tap(PLUGIN_NAME, (expr) => {
|
|
772
790
|
const clearDep = new ConstDependency(
|
|
773
791
|
"/* createRequire() */ undefined",
|
|
774
792
|
/** @type {Range} */ (expr.range)
|
|
@@ -780,4 +798,5 @@ class CommonJsImportsParserPlugin {
|
|
|
780
798
|
// #endregion
|
|
781
799
|
}
|
|
782
800
|
}
|
|
801
|
+
|
|
783
802
|
module.exports = CommonJsImportsParserPlugin;
|
|
@@ -5,12 +5,24 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const {
|
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
10
|
+
JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
|
11
|
+
} = require("../ModuleTypeConstants");
|
|
8
12
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
13
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
14
|
const SelfModuleFactory = require("../SelfModuleFactory");
|
|
11
15
|
const Template = require("../Template");
|
|
16
|
+
const {
|
|
17
|
+
evaluateToIdentifier,
|
|
18
|
+
expressionIsUnsupported,
|
|
19
|
+
toConstantDependency
|
|
20
|
+
} = require("../javascript/JavascriptParserHelpers");
|
|
21
|
+
const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependency");
|
|
12
22
|
const CommonJsExportsDependency = require("./CommonJsExportsDependency");
|
|
23
|
+
const CommonJsExportsParserPlugin = require("./CommonJsExportsParserPlugin");
|
|
13
24
|
const CommonJsFullRequireDependency = require("./CommonJsFullRequireDependency");
|
|
25
|
+
const CommonJsImportsParserPlugin = require("./CommonJsImportsParserPlugin");
|
|
14
26
|
const CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
|
|
15
27
|
const CommonJsRequireDependency = require("./CommonJsRequireDependency");
|
|
16
28
|
const CommonJsSelfReferenceDependency = require("./CommonJsSelfReferenceDependency");
|
|
@@ -21,19 +33,6 @@ const RequireResolveDependency = require("./RequireResolveDependency");
|
|
|
21
33
|
const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
|
|
22
34
|
const RuntimeRequirementsDependency = require("./RuntimeRequirementsDependency");
|
|
23
35
|
|
|
24
|
-
const CommonJsExportsParserPlugin = require("./CommonJsExportsParserPlugin");
|
|
25
|
-
const CommonJsImportsParserPlugin = require("./CommonJsImportsParserPlugin");
|
|
26
|
-
|
|
27
|
-
const {
|
|
28
|
-
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
29
|
-
JAVASCRIPT_MODULE_TYPE_DYNAMIC
|
|
30
|
-
} = require("../ModuleTypeConstants");
|
|
31
|
-
const {
|
|
32
|
-
evaluateToIdentifier,
|
|
33
|
-
toConstantDependency
|
|
34
|
-
} = require("../javascript/JavascriptParserHelpers");
|
|
35
|
-
const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependency");
|
|
36
|
-
|
|
37
36
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
|
38
37
|
/** @typedef {import("../Compilation")} Compilation */
|
|
39
38
|
/** @typedef {import("../Compiler")} Compiler */
|
|
@@ -158,7 +157,7 @@ class CommonJsPlugin {
|
|
|
158
157
|
|
|
159
158
|
compilation.hooks.runtimeRequirementInTree
|
|
160
159
|
.for(RuntimeGlobals.harmonyModuleDecorator)
|
|
161
|
-
.tap(PLUGIN_NAME, (chunk,
|
|
160
|
+
.tap(PLUGIN_NAME, (chunk, _set) => {
|
|
162
161
|
compilation.addRuntimeModule(
|
|
163
162
|
chunk,
|
|
164
163
|
new HarmonyModuleDecoratorRuntimeModule()
|
|
@@ -167,7 +166,7 @@ class CommonJsPlugin {
|
|
|
167
166
|
|
|
168
167
|
compilation.hooks.runtimeRequirementInTree
|
|
169
168
|
.for(RuntimeGlobals.nodeModuleDecorator)
|
|
170
|
-
.tap(PLUGIN_NAME, (chunk,
|
|
169
|
+
.tap(PLUGIN_NAME, (chunk, _set) => {
|
|
171
170
|
compilation.addRuntimeModule(
|
|
172
171
|
chunk,
|
|
173
172
|
new NodeModuleDecoratorRuntimeModule()
|
|
@@ -180,8 +179,9 @@ class CommonJsPlugin {
|
|
|
180
179
|
* @returns {void}
|
|
181
180
|
*/
|
|
182
181
|
const handler = (parser, parserOptions) => {
|
|
183
|
-
if (parserOptions.commonjs !== undefined && !parserOptions.commonjs)
|
|
182
|
+
if (parserOptions.commonjs !== undefined && !parserOptions.commonjs) {
|
|
184
183
|
return;
|
|
184
|
+
}
|
|
185
185
|
parser.hooks.typeof
|
|
186
186
|
.for("module")
|
|
187
187
|
.tap(
|
|
@@ -199,9 +199,20 @@ class CommonJsPlugin {
|
|
|
199
199
|
[RuntimeGlobals.moduleCache, RuntimeGlobals.entryModuleId]
|
|
200
200
|
)
|
|
201
201
|
);
|
|
202
|
+
|
|
203
|
+
parser.hooks.expression
|
|
204
|
+
.for("require.extensions")
|
|
205
|
+
.tap(
|
|
206
|
+
PLUGIN_NAME,
|
|
207
|
+
expressionIsUnsupported(
|
|
208
|
+
parser,
|
|
209
|
+
"require.extensions is not supported by webpack. Use a loader instead."
|
|
210
|
+
)
|
|
211
|
+
);
|
|
212
|
+
|
|
202
213
|
parser.hooks.expression
|
|
203
214
|
.for(RuntimeGlobals.moduleLoaded)
|
|
204
|
-
.tap(PLUGIN_NAME, expr => {
|
|
215
|
+
.tap(PLUGIN_NAME, (expr) => {
|
|
205
216
|
/** @type {BuildInfo} */
|
|
206
217
|
(parser.state.module.buildInfo).moduleConcatenationBailout =
|
|
207
218
|
RuntimeGlobals.moduleLoaded;
|
|
@@ -215,7 +226,7 @@ class CommonJsPlugin {
|
|
|
215
226
|
|
|
216
227
|
parser.hooks.expression
|
|
217
228
|
.for(RuntimeGlobals.moduleId)
|
|
218
|
-
.tap(PLUGIN_NAME, expr => {
|
|
229
|
+
.tap(PLUGIN_NAME, (expr) => {
|
|
219
230
|
/** @type {BuildInfo} */
|
|
220
231
|
(parser.state.module.buildInfo).moduleConcatenationBailout =
|
|
221
232
|
RuntimeGlobals.moduleId;
|
|
@@ -12,14 +12,15 @@ const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTempl
|
|
|
12
12
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
13
13
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
14
14
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
15
|
+
/** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
|
|
15
16
|
|
|
16
17
|
class CommonJsRequireContextDependency extends ContextDependency {
|
|
17
18
|
/**
|
|
18
|
-
* @param {
|
|
19
|
+
* @param {ContextDependencyOptions} options options for the context module
|
|
19
20
|
* @param {Range} range location in source code
|
|
20
21
|
* @param {Range | undefined} valueRange location of the require call
|
|
21
|
-
* @param {boolean | string
|
|
22
|
-
* @param {string} context context
|
|
22
|
+
* @param {boolean | string} inShorthand true or name
|
|
23
|
+
* @param {string=} context context
|
|
23
24
|
*/
|
|
24
25
|
constructor(options, range, valueRange, inShorthand, context) {
|
|
25
26
|
super(options, context);
|