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
|
@@ -13,28 +13,31 @@ const {
|
|
|
13
13
|
const { getTrimmedIdsAndRange } = require("../util/chainedImports");
|
|
14
14
|
const makeSerializable = require("../util/makeSerializable");
|
|
15
15
|
const propertyAccess = require("../util/propertyAccess");
|
|
16
|
+
const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
|
|
16
17
|
const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
18
|
+
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
17
19
|
|
|
18
20
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
19
|
-
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
20
|
-
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
|
21
21
|
/** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
|
|
22
|
-
/** @typedef {import("../Dependency").
|
|
23
|
-
/** @typedef {import("../Dependency").
|
|
22
|
+
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
23
|
+
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
24
24
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
25
25
|
/** @typedef {import("../Module")} Module */
|
|
26
26
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
27
27
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
28
|
-
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
29
28
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
30
29
|
/** @typedef {import("../WebpackError")} WebpackError */
|
|
31
|
-
/** @typedef {import("../javascript/JavascriptParser").
|
|
30
|
+
/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
|
|
32
31
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
33
32
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
33
|
+
/** @typedef {import("../optimize/InnerGraph").UsedByExports} UsedByExports */
|
|
34
34
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
35
35
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
36
|
-
/** @typedef {import("../util/Hash")} Hash */
|
|
37
36
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
37
|
+
/** @typedef {import("../util/chainedImports").IdRanges} IdRanges */
|
|
38
|
+
/** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
|
|
39
|
+
/** @typedef {HarmonyImportDependency.Ids} Ids */
|
|
40
|
+
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
38
41
|
|
|
39
42
|
const idsSymbol = Symbol("HarmonyImportSpecifierDependency.ids");
|
|
40
43
|
|
|
@@ -44,12 +47,13 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
44
47
|
/**
|
|
45
48
|
* @param {string} request request
|
|
46
49
|
* @param {number} sourceOrder source order
|
|
47
|
-
* @param {
|
|
50
|
+
* @param {Ids} ids ids
|
|
48
51
|
* @param {string} name name
|
|
49
52
|
* @param {Range} range range
|
|
50
|
-
* @param {
|
|
53
|
+
* @param {ExportPresenceMode} exportPresenceMode export presence mode
|
|
54
|
+
* @param {ImportPhaseType} phase import phase
|
|
51
55
|
* @param {ImportAttributes | undefined} attributes import attributes
|
|
52
|
-
* @param {
|
|
56
|
+
* @param {IdRanges | undefined} idRanges ranges for members of ids; the two arrays are right-aligned
|
|
53
57
|
*/
|
|
54
58
|
constructor(
|
|
55
59
|
request,
|
|
@@ -58,10 +62,11 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
58
62
|
name,
|
|
59
63
|
range,
|
|
60
64
|
exportPresenceMode,
|
|
65
|
+
phase,
|
|
61
66
|
attributes,
|
|
62
67
|
idRanges // TODO webpack 6 make this non-optional. It must always be set to properly trim ids.
|
|
63
68
|
) {
|
|
64
|
-
super(request, sourceOrder, attributes);
|
|
69
|
+
super(request, sourceOrder, phase, attributes);
|
|
65
70
|
this.ids = ids;
|
|
66
71
|
this.name = name;
|
|
67
72
|
this.range = range;
|
|
@@ -72,9 +77,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
72
77
|
this.directImport = undefined;
|
|
73
78
|
this.shorthand = undefined;
|
|
74
79
|
this.asiSafe = undefined;
|
|
75
|
-
/** @type {
|
|
80
|
+
/** @type {UsedByExports | undefined} */
|
|
76
81
|
this.usedByExports = undefined;
|
|
77
|
-
/** @type {
|
|
82
|
+
/** @type {DestructuringAssignmentProperties | undefined} */
|
|
78
83
|
this.referencedPropertiesInDestructuring = undefined;
|
|
79
84
|
}
|
|
80
85
|
|
|
@@ -99,23 +104,22 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
99
104
|
|
|
100
105
|
/**
|
|
101
106
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
102
|
-
* @returns {
|
|
107
|
+
* @returns {Ids} the imported ids
|
|
103
108
|
*/
|
|
104
109
|
getIds(moduleGraph) {
|
|
105
110
|
const meta = moduleGraph.getMetaIfExisting(this);
|
|
106
111
|
if (meta === undefined) return this.ids;
|
|
107
|
-
const ids = meta[
|
|
112
|
+
const ids = meta[idsSymbol];
|
|
108
113
|
return ids !== undefined ? ids : this.ids;
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
/**
|
|
112
117
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
113
|
-
* @param {
|
|
118
|
+
* @param {Ids} ids the imported ids
|
|
114
119
|
* @returns {void}
|
|
115
120
|
*/
|
|
116
121
|
setIds(moduleGraph, ids) {
|
|
117
|
-
|
|
118
|
-
(moduleGraph.getMeta(this))[idsSymbol] = ids;
|
|
122
|
+
moduleGraph.getMeta(this)[idsSymbol] = ids;
|
|
119
123
|
}
|
|
120
124
|
|
|
121
125
|
/**
|
|
@@ -142,7 +146,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
142
146
|
* Returns list of exports referenced by this dependency
|
|
143
147
|
* @param {ModuleGraph} moduleGraph module graph
|
|
144
148
|
* @param {RuntimeSpec} runtime the runtime for which the module is analysed
|
|
145
|
-
* @returns {
|
|
149
|
+
* @returns {ReferencedExports} referenced exports
|
|
146
150
|
*/
|
|
147
151
|
getReferencedExports(moduleGraph, runtime) {
|
|
148
152
|
let ids = this.getIds(moduleGraph);
|
|
@@ -164,8 +168,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
164
168
|
) {
|
|
165
169
|
case "default-only":
|
|
166
170
|
case "default-with-named":
|
|
167
|
-
if (ids.length === 1)
|
|
171
|
+
if (ids.length === 1) {
|
|
168
172
|
return this._getReferencedExportsInDestructuring();
|
|
173
|
+
}
|
|
169
174
|
ids = ids.slice(1);
|
|
170
175
|
namespaceObjectAsContext = true;
|
|
171
176
|
break;
|
|
@@ -187,15 +192,21 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
187
192
|
}
|
|
188
193
|
|
|
189
194
|
/**
|
|
190
|
-
* @param {
|
|
191
|
-
* @returns {
|
|
195
|
+
* @param {Ids=} ids ids
|
|
196
|
+
* @returns {RawReferencedExports} referenced exports
|
|
192
197
|
*/
|
|
193
198
|
_getReferencedExportsInDestructuring(ids) {
|
|
194
199
|
if (this.referencedPropertiesInDestructuring) {
|
|
195
|
-
/** @type {
|
|
200
|
+
/** @type {RawReferencedExports} */
|
|
201
|
+
const refsInDestructuring = [];
|
|
202
|
+
traverseDestructuringAssignmentProperties(
|
|
203
|
+
this.referencedPropertiesInDestructuring,
|
|
204
|
+
(stack) => refsInDestructuring.push(stack.map((p) => p.id))
|
|
205
|
+
);
|
|
206
|
+
/** @type {RawReferencedExports} */
|
|
196
207
|
const refs = [];
|
|
197
|
-
for (const
|
|
198
|
-
refs.push(ids ? ids
|
|
208
|
+
for (const idsInDestructuring of refsInDestructuring) {
|
|
209
|
+
refs.push(ids ? [...ids, ...idsInDestructuring] : idsInDestructuring);
|
|
199
210
|
}
|
|
200
211
|
return refs;
|
|
201
212
|
}
|
|
@@ -204,11 +215,12 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
|
204
215
|
|
|
205
216
|
/**
|
|
206
217
|
* @param {ModuleGraph} moduleGraph module graph
|
|
207
|
-
* @returns {
|
|
218
|
+
* @returns {ExportPresenceMode} effective mode
|
|
208
219
|
*/
|
|
209
220
|
_getEffectiveExportPresenceLevel(moduleGraph) {
|
|
210
|
-
if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
|
|
221
|
+
if (this.exportPresenceMode !== ExportPresenceModes.AUTO) {
|
|
211
222
|
return this.exportPresenceMode;
|
|
223
|
+
}
|
|
212
224
|
const buildMeta =
|
|
213
225
|
/** @type {BuildMeta} */
|
|
214
226
|
(
|
|
@@ -371,12 +383,23 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
371
383
|
}
|
|
372
384
|
}
|
|
373
385
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
386
|
+
/** @type {{ ids: Ids, range: Range, shorthand: boolean | string }[]} */
|
|
387
|
+
const replacementsInDestructuring = [];
|
|
388
|
+
traverseDestructuringAssignmentProperties(
|
|
389
|
+
dep.referencedPropertiesInDestructuring,
|
|
390
|
+
undefined,
|
|
391
|
+
(stack) => {
|
|
392
|
+
const property = stack[stack.length - 1];
|
|
393
|
+
replacementsInDestructuring.push({
|
|
394
|
+
ids: stack.map((p) => p.id),
|
|
395
|
+
range: property.range,
|
|
396
|
+
shorthand: property.shorthand
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
);
|
|
400
|
+
for (const { ids, shorthand, range } of replacementsInDestructuring) {
|
|
401
|
+
/** @type {Ids} */
|
|
402
|
+
const concatedIds = [...prefixedIds, ...ids];
|
|
380
403
|
const module = /** @type {Module} */ (moduleGraph.getModule(dep));
|
|
381
404
|
const used = moduleGraph
|
|
382
405
|
.getExportsInfo(module)
|
|
@@ -389,10 +412,8 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
389
412
|
const comment = `${Template.toNormalComment(name)} `;
|
|
390
413
|
const key = comment + JSON.stringify(newName);
|
|
391
414
|
source.replace(
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
/** @type {Range} */
|
|
395
|
-
(range)[1] - 1,
|
|
415
|
+
range[0],
|
|
416
|
+
range[1] - 1,
|
|
396
417
|
shorthand ? `${key}: ${name}` : `${key}`
|
|
397
418
|
);
|
|
398
419
|
}
|
|
@@ -403,7 +424,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
403
424
|
* @param {HarmonyImportSpecifierDependency} dep dependency
|
|
404
425
|
* @param {ReplaceSource} source source
|
|
405
426
|
* @param {DependencyTemplateContext} templateContext context
|
|
406
|
-
* @param {
|
|
427
|
+
* @param {Ids} ids ids
|
|
407
428
|
* @returns {string} generated code
|
|
408
429
|
*/
|
|
409
430
|
_getCodeForIds(dep, source, templateContext, ids) {
|
|
@@ -420,13 +441,15 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
420
441
|
exportExpr = concatenationScope.createModuleReference(
|
|
421
442
|
connection.module,
|
|
422
443
|
{
|
|
423
|
-
asiSafe: dep.asiSafe
|
|
444
|
+
asiSafe: dep.asiSafe,
|
|
445
|
+
deferredImport: ImportPhaseUtils.isDefer(dep.phase)
|
|
424
446
|
}
|
|
425
447
|
);
|
|
426
448
|
} else if (dep.namespaceObjectAsContext && ids.length === 1) {
|
|
427
449
|
exportExpr =
|
|
428
450
|
concatenationScope.createModuleReference(connection.module, {
|
|
429
|
-
asiSafe: dep.asiSafe
|
|
451
|
+
asiSafe: dep.asiSafe,
|
|
452
|
+
deferredImport: ImportPhaseUtils.isDefer(dep.phase)
|
|
430
453
|
}) + propertyAccess(ids);
|
|
431
454
|
} else {
|
|
432
455
|
exportExpr = concatenationScope.createModuleReference(
|
|
@@ -435,7 +458,8 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
435
458
|
ids,
|
|
436
459
|
call: dep.call,
|
|
437
460
|
directImport: dep.directImport,
|
|
438
|
-
asiSafe: dep.asiSafe
|
|
461
|
+
asiSafe: dep.asiSafe,
|
|
462
|
+
deferredImport: ImportPhaseUtils.isDefer(dep.phase)
|
|
439
463
|
}
|
|
440
464
|
);
|
|
441
465
|
}
|
|
@@ -448,6 +472,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
448
472
|
exportExpr = runtimeTemplate.exportFromImport({
|
|
449
473
|
moduleGraph,
|
|
450
474
|
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
|
475
|
+
chunkGraph: templateContext.chunkGraph,
|
|
451
476
|
request: dep.request,
|
|
452
477
|
exportName: ids,
|
|
453
478
|
originModule: module,
|
|
@@ -458,7 +483,8 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
458
483
|
importVar: dep.getImportVar(moduleGraph),
|
|
459
484
|
initFragments,
|
|
460
485
|
runtime,
|
|
461
|
-
runtimeRequirements
|
|
486
|
+
runtimeRequirements,
|
|
487
|
+
dependency: dep
|
|
462
488
|
});
|
|
463
489
|
}
|
|
464
490
|
return exportExpr;
|
|
@@ -466,3 +492,4 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
|
466
492
|
};
|
|
467
493
|
|
|
468
494
|
module.exports = HarmonyImportSpecifierDependency;
|
|
495
|
+
module.exports.idsSymbol = idsSymbol;
|
|
@@ -5,33 +5,36 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const {
|
|
9
|
+
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
10
|
+
JAVASCRIPT_MODULE_TYPE_ESM
|
|
11
|
+
} = require("../ModuleTypeConstants");
|
|
8
12
|
const HarmonyAcceptDependency = require("./HarmonyAcceptDependency");
|
|
9
13
|
const HarmonyAcceptImportDependency = require("./HarmonyAcceptImportDependency");
|
|
10
14
|
const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
|
|
15
|
+
const HarmonyDetectionParserPlugin = require("./HarmonyDetectionParserPlugin");
|
|
11
16
|
const HarmonyEvaluatedImportSpecifierDependency = require("./HarmonyEvaluatedImportSpecifierDependency");
|
|
17
|
+
const HarmonyExportDependencyParserPlugin = require("./HarmonyExportDependencyParserPlugin");
|
|
12
18
|
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency");
|
|
13
19
|
const HarmonyExportHeaderDependency = require("./HarmonyExportHeaderDependency");
|
|
14
20
|
const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImportedSpecifierDependency");
|
|
15
21
|
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency");
|
|
22
|
+
const HarmonyImportDependencyParserPlugin = require("./HarmonyImportDependencyParserPlugin");
|
|
16
23
|
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
|
17
24
|
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
|
18
25
|
|
|
19
|
-
const {
|
|
20
|
-
JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
21
|
-
JAVASCRIPT_MODULE_TYPE_ESM
|
|
22
|
-
} = require("../ModuleTypeConstants");
|
|
23
|
-
const HarmonyDetectionParserPlugin = require("./HarmonyDetectionParserPlugin");
|
|
24
|
-
const HarmonyExportDependencyParserPlugin = require("./HarmonyExportDependencyParserPlugin");
|
|
25
|
-
const HarmonyImportDependencyParserPlugin = require("./HarmonyImportDependencyParserPlugin");
|
|
26
26
|
const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin");
|
|
27
27
|
|
|
28
28
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
|
29
29
|
/** @typedef {import("../Compiler")} Compiler */
|
|
30
30
|
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* @typedef {object} HarmonyModulesPluginOptions
|
|
34
|
+
* @property {boolean=} deferImport
|
|
35
|
+
*/
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
const PLUGIN_NAME = "HarmonyModulesPlugin";
|
|
35
38
|
|
|
36
39
|
class HarmonyModulesPlugin {
|
|
37
40
|
/**
|
|
@@ -127,10 +130,11 @@ class HarmonyModulesPlugin {
|
|
|
127
130
|
*/
|
|
128
131
|
const handler = (parser, parserOptions) => {
|
|
129
132
|
// TODO webpack 6: rename harmony to esm or module
|
|
130
|
-
if (parserOptions.harmony !== undefined && !parserOptions.harmony)
|
|
133
|
+
if (parserOptions.harmony !== undefined && !parserOptions.harmony) {
|
|
131
134
|
return;
|
|
135
|
+
}
|
|
132
136
|
|
|
133
|
-
new HarmonyDetectionParserPlugin(
|
|
137
|
+
new HarmonyDetectionParserPlugin().apply(parser);
|
|
134
138
|
new HarmonyImportDependencyParserPlugin(parserOptions).apply(parser);
|
|
135
139
|
new HarmonyExportDependencyParserPlugin(parserOptions).apply(parser);
|
|
136
140
|
new HarmonyTopLevelThisParserPlugin().apply(parser);
|
|
@@ -146,4 +150,5 @@ class HarmonyModulesPlugin {
|
|
|
146
150
|
);
|
|
147
151
|
}
|
|
148
152
|
}
|
|
153
|
+
|
|
149
154
|
module.exports = HarmonyModulesPlugin;
|
|
@@ -12,27 +12,27 @@ const HarmonyExports = require("./HarmonyExports");
|
|
|
12
12
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
13
13
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
14
14
|
|
|
15
|
+
const PLUGIN_NAME = "HarmonyTopLevelThisParserPlugin";
|
|
16
|
+
|
|
15
17
|
class HarmonyTopLevelThisParserPlugin {
|
|
16
18
|
/**
|
|
17
19
|
* @param {JavascriptParser} parser the parser
|
|
18
20
|
* @returns {void}
|
|
19
21
|
*/
|
|
20
22
|
apply(parser) {
|
|
21
|
-
parser.hooks.expression
|
|
22
|
-
.
|
|
23
|
-
.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
});
|
|
23
|
+
parser.hooks.expression.for("this").tap(PLUGIN_NAME, (node) => {
|
|
24
|
+
if (!parser.scope.topLevelScope) return;
|
|
25
|
+
if (HarmonyExports.isEnabled(parser.state)) {
|
|
26
|
+
const dep = new ConstDependency(
|
|
27
|
+
"undefined",
|
|
28
|
+
/** @type {Range} */ (node.range),
|
|
29
|
+
null
|
|
30
|
+
);
|
|
31
|
+
dep.loc = /** @type {DependencyLocation} */ (node.loc);
|
|
32
|
+
parser.state.module.addPresentationalDependency(dep);
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -12,10 +12,11 @@ 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 ImportContextDependency extends ContextDependency {
|
|
17
18
|
/**
|
|
18
|
-
* @param {
|
|
19
|
+
* @param {ContextDependencyOptions} options options
|
|
19
20
|
* @param {Range} range range
|
|
20
21
|
* @param {Range} valueRange value range
|
|
21
22
|
*/
|
|
@@ -34,6 +35,19 @@ class ImportContextDependency extends ContextDependency {
|
|
|
34
35
|
return "esm";
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
/**
|
|
39
|
+
* @returns {string | null} an identifier to merge equal requests
|
|
40
|
+
*/
|
|
41
|
+
getResourceIdentifier() {
|
|
42
|
+
let str = super.getResourceIdentifier();
|
|
43
|
+
|
|
44
|
+
if (this.options.attributes) {
|
|
45
|
+
str += `|importAttributes${JSON.stringify(this.options.attributes)}`;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return str;
|
|
49
|
+
}
|
|
50
|
+
|
|
37
51
|
/**
|
|
38
52
|
* @param {ObjectSerializerContext} context context
|
|
39
53
|
*/
|
|
@@ -11,7 +11,8 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
11
11
|
|
|
12
12
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
13
13
|
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
14
|
-
/** @typedef {import("../Dependency").
|
|
14
|
+
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
15
|
+
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
15
16
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
16
17
|
/** @typedef {import("../Module")} Module */
|
|
17
18
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
@@ -21,19 +22,22 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
21
22
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
22
23
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
23
24
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
25
|
+
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
24
26
|
|
|
25
27
|
class ImportDependency extends ModuleDependency {
|
|
26
28
|
/**
|
|
27
29
|
* @param {string} request the request
|
|
28
30
|
* @param {Range} range expression range
|
|
29
|
-
* @param {
|
|
31
|
+
* @param {RawReferencedExports | null} referencedExports list of referenced exports
|
|
32
|
+
* @param {ImportPhaseType} phase import phase
|
|
30
33
|
* @param {ImportAttributes=} attributes import attributes
|
|
31
34
|
*/
|
|
32
|
-
constructor(request, range, referencedExports, attributes) {
|
|
35
|
+
constructor(request, range, referencedExports, phase, attributes) {
|
|
33
36
|
super(request);
|
|
34
37
|
this.range = range;
|
|
35
38
|
this.referencedExports = referencedExports;
|
|
36
|
-
this.
|
|
39
|
+
this.phase = phase;
|
|
40
|
+
this.attributes = attributes;
|
|
37
41
|
}
|
|
38
42
|
|
|
39
43
|
get type() {
|
|
@@ -44,11 +48,22 @@ class ImportDependency extends ModuleDependency {
|
|
|
44
48
|
return "esm";
|
|
45
49
|
}
|
|
46
50
|
|
|
51
|
+
/**
|
|
52
|
+
* @returns {string | null} an identifier to merge equal requests
|
|
53
|
+
*/
|
|
54
|
+
getResourceIdentifier() {
|
|
55
|
+
let str = super.getResourceIdentifier();
|
|
56
|
+
if (this.attributes) {
|
|
57
|
+
str += `|importAttributes${JSON.stringify(this.attributes)}`;
|
|
58
|
+
}
|
|
59
|
+
return str;
|
|
60
|
+
}
|
|
61
|
+
|
|
47
62
|
/**
|
|
48
63
|
* Returns list of exports referenced by this dependency
|
|
49
64
|
* @param {ModuleGraph} moduleGraph module graph
|
|
50
65
|
* @param {RuntimeSpec} runtime the runtime for which the module is analysed
|
|
51
|
-
* @returns {
|
|
66
|
+
* @returns {ReferencedExports} referenced exports
|
|
52
67
|
*/
|
|
53
68
|
getReferencedExports(moduleGraph, runtime) {
|
|
54
69
|
if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
@@ -87,7 +102,8 @@ class ImportDependency extends ModuleDependency {
|
|
|
87
102
|
serialize(context) {
|
|
88
103
|
context.write(this.range);
|
|
89
104
|
context.write(this.referencedExports);
|
|
90
|
-
context.write(this.
|
|
105
|
+
context.write(this.phase);
|
|
106
|
+
context.write(this.attributes);
|
|
91
107
|
super.serialize(context);
|
|
92
108
|
}
|
|
93
109
|
|
|
@@ -97,7 +113,8 @@ class ImportDependency extends ModuleDependency {
|
|
|
97
113
|
deserialize(context) {
|
|
98
114
|
this.range = context.read();
|
|
99
115
|
this.referencedExports = context.read();
|
|
100
|
-
this.
|
|
116
|
+
this.phase = context.read();
|
|
117
|
+
this.attributes = context.read();
|
|
101
118
|
super.deserialize(context);
|
|
102
119
|
}
|
|
103
120
|
}
|
|
@@ -128,6 +145,7 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
|
|
128
145
|
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
|
129
146
|
request: dep.request,
|
|
130
147
|
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
|
148
|
+
dependency: dep,
|
|
131
149
|
message: "import()",
|
|
132
150
|
runtimeRequirements
|
|
133
151
|
});
|
|
@@ -10,23 +10,24 @@ const ImportDependency = require("./ImportDependency");
|
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
12
12
|
/** @typedef {import("../Dependency")} Dependency */
|
|
13
|
-
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
|
14
13
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
15
14
|
/** @typedef {import("../Module")} Module */
|
|
16
15
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
17
|
-
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
18
16
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
19
17
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
18
|
+
/** @typedef {ImportDependency.RawReferencedExports} RawReferencedExports */
|
|
19
|
+
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
20
20
|
|
|
21
21
|
class ImportEagerDependency extends ImportDependency {
|
|
22
22
|
/**
|
|
23
23
|
* @param {string} request the request
|
|
24
24
|
* @param {Range} range expression range
|
|
25
|
-
* @param {
|
|
25
|
+
* @param {RawReferencedExports | null} referencedExports list of referenced exports
|
|
26
|
+
* @param {ImportPhaseType} phase import phase
|
|
26
27
|
* @param {ImportAttributes=} attributes import attributes
|
|
27
28
|
*/
|
|
28
|
-
constructor(request, range, referencedExports, attributes) {
|
|
29
|
-
super(request, range, referencedExports, attributes);
|
|
29
|
+
constructor(request, range, referencedExports, phase, attributes) {
|
|
30
|
+
super(request, range, referencedExports, phase, attributes);
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
get type() {
|
|
@@ -64,6 +65,7 @@ ImportEagerDependency.Template = class ImportEagerDependencyTemplate extends (
|
|
|
64
65
|
request: dep.request,
|
|
65
66
|
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
|
66
67
|
message: "import() eager",
|
|
68
|
+
dependency: dep,
|
|
67
69
|
runtimeRequirements
|
|
68
70
|
});
|
|
69
71
|
|
|
@@ -14,26 +14,32 @@ const ImportMetaContextDependency = require("./ImportMetaContextDependency");
|
|
|
14
14
|
/** @typedef {import("estree").Expression} Expression */
|
|
15
15
|
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
|
|
16
16
|
/** @typedef {import("estree").Property} Property */
|
|
17
|
-
/** @typedef {import("estree").
|
|
17
|
+
/** @typedef {import("estree").Identifier} Identifier */
|
|
18
18
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
19
19
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
20
20
|
/** @typedef {import("../ContextModule").ContextModuleOptions} ContextModuleOptions */
|
|
21
|
+
/** @typedef {import("../ContextModule").ContextMode} ContextMode */
|
|
22
|
+
/** @typedef {import("../Chunk").ChunkName} ChunkName */
|
|
21
23
|
/** @typedef {import("../ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
|
|
24
|
+
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
22
25
|
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
|
23
26
|
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
|
24
|
-
|
|
27
|
+
|
|
28
|
+
/** @typedef {Pick<ContextModuleOptions, "mode" | "recursive" | "regExp" | "include" | "exclude" | "chunkName"> & { groupOptions: RawChunkGroupOptions, exports?: RawReferencedExports }} ImportMetaContextOptions */
|
|
25
29
|
|
|
26
30
|
/**
|
|
27
|
-
* @param {
|
|
31
|
+
* @param {Property} prop property
|
|
28
32
|
* @param {string} expect except message
|
|
29
33
|
* @returns {WebpackError} error
|
|
30
34
|
*/
|
|
31
35
|
function createPropertyParseError(prop, expect) {
|
|
32
36
|
return createError(
|
|
33
37
|
`Parsing import.meta.webpackContext options failed. Unknown value for property ${JSON.stringify(
|
|
34
|
-
|
|
38
|
+
/** @type {Identifier} */
|
|
39
|
+
(prop.key).name
|
|
35
40
|
)}, expected type ${expect}.`,
|
|
36
|
-
|
|
41
|
+
/** @type {DependencyLocation} */
|
|
42
|
+
(prop.value.loc)
|
|
37
43
|
);
|
|
38
44
|
}
|
|
39
45
|
|
|
@@ -49,6 +55,8 @@ function createError(msg, loc) {
|
|
|
49
55
|
return error;
|
|
50
56
|
}
|
|
51
57
|
|
|
58
|
+
const PLUGIN_NAME = "ImportMetaContextDependencyParserPlugin";
|
|
59
|
+
|
|
52
60
|
module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
53
61
|
/**
|
|
54
62
|
* @param {JavascriptParser} parser the parser
|
|
@@ -57,7 +65,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
57
65
|
apply(parser) {
|
|
58
66
|
parser.hooks.evaluateIdentifier
|
|
59
67
|
.for("import.meta.webpackContext")
|
|
60
|
-
.tap(
|
|
68
|
+
.tap(PLUGIN_NAME, (expr) =>
|
|
61
69
|
evaluateToIdentifier(
|
|
62
70
|
"import.meta.webpackContext",
|
|
63
71
|
"import.meta",
|
|
@@ -67,7 +75,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
67
75
|
);
|
|
68
76
|
parser.hooks.call
|
|
69
77
|
.for("import.meta.webpackContext")
|
|
70
|
-
.tap(
|
|
78
|
+
.tap(PLUGIN_NAME, (expr) => {
|
|
71
79
|
if (expr.arguments.length < 1 || expr.arguments.length > 2) return;
|
|
72
80
|
const [directoryNode, optionsNode] = expr.arguments;
|
|
73
81
|
if (optionsNode && optionsNode.type !== "ObjectExpression") return;
|
|
@@ -79,7 +87,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
79
87
|
const errors = [];
|
|
80
88
|
let regExp = /^\.\/.*$/;
|
|
81
89
|
let recursive = true;
|
|
82
|
-
/** @type {
|
|
90
|
+
/** @type {ContextMode} */
|
|
83
91
|
let mode = "sync";
|
|
84
92
|
/** @type {ContextModuleOptions["include"]} */
|
|
85
93
|
let include;
|
|
@@ -87,9 +95,9 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
87
95
|
let exclude;
|
|
88
96
|
/** @type {RawChunkGroupOptions} */
|
|
89
97
|
const groupOptions = {};
|
|
90
|
-
/** @type {
|
|
98
|
+
/** @type {ChunkName | undefined} */
|
|
91
99
|
let chunkName;
|
|
92
|
-
/** @type {
|
|
100
|
+
/** @type {RawReferencedExports | undefined} */
|
|
93
101
|
let exports;
|
|
94
102
|
if (optionsNode) {
|
|
95
103
|
for (const prop of /** @type {ObjectExpression} */ (optionsNode)
|
|
@@ -98,7 +106,8 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
98
106
|
errors.push(
|
|
99
107
|
createError(
|
|
100
108
|
"Parsing import.meta.webpackContext options failed.",
|
|
101
|
-
/** @type {DependencyLocation} */
|
|
109
|
+
/** @type {DependencyLocation} */
|
|
110
|
+
(optionsNode.loc)
|
|
102
111
|
)
|
|
103
112
|
);
|
|
104
113
|
break;
|
|
@@ -172,14 +181,15 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
172
181
|
/** @type {BasicEvaluatedExpression[]} */
|
|
173
182
|
(expr.items);
|
|
174
183
|
if (
|
|
175
|
-
items.every(i => {
|
|
184
|
+
items.every((i) => {
|
|
176
185
|
if (!i.isArray()) return false;
|
|
177
186
|
const innerItems =
|
|
178
187
|
/** @type {BasicEvaluatedExpression[]} */ (i.items);
|
|
179
|
-
return innerItems.every(i => i.isString());
|
|
188
|
+
return innerItems.every((i) => i.isString());
|
|
180
189
|
})
|
|
181
190
|
) {
|
|
182
191
|
exports = [];
|
|
192
|
+
|
|
183
193
|
for (const i1 of items) {
|
|
184
194
|
/** @type {string[]} */
|
|
185
195
|
const export_ = [];
|
|
@@ -14,7 +14,6 @@ const ImportMetaContextDependency = require("./ImportMetaContextDependency");
|
|
|
14
14
|
const ImportMetaContextDependencyParserPlugin = require("./ImportMetaContextDependencyParserPlugin");
|
|
15
15
|
|
|
16
16
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
|
17
|
-
/** @typedef {import("../../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
|
|
18
17
|
/** @typedef {import("../Compiler")} Compiler */
|
|
19
18
|
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
|
20
19
|
|
|
@@ -52,8 +51,9 @@ class ImportMetaContextPlugin {
|
|
|
52
51
|
if (
|
|
53
52
|
parserOptions.importMetaContext !== undefined &&
|
|
54
53
|
!parserOptions.importMetaContext
|
|
55
|
-
)
|
|
54
|
+
) {
|
|
56
55
|
return;
|
|
56
|
+
}
|
|
57
57
|
|
|
58
58
|
new ImportMetaContextDependencyParserPlugin().apply(parser);
|
|
59
59
|
};
|