@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -8,32 +8,48 @@
|
|
|
8
8
|
const { ConcatSource } = require("webpack-sources");
|
|
9
9
|
const { UsageState } = require("../ExportsInfo");
|
|
10
10
|
const ExternalModule = require("../ExternalModule");
|
|
11
|
+
const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
|
|
11
12
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
12
13
|
const Template = require("../Template");
|
|
14
|
+
const HarmonyExportExpressionDependency = require("../dependencies/HarmonyExportExpressionDependency");
|
|
13
15
|
const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
|
|
14
16
|
const HarmonyExportSpecifierDependency = require("../dependencies/HarmonyExportSpecifierDependency");
|
|
15
17
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
16
18
|
const ConcatenatedModule = require("../optimize/ConcatenatedModule");
|
|
17
19
|
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
18
|
-
const {
|
|
20
|
+
const {
|
|
21
|
+
RESERVED_IDENTIFIER,
|
|
22
|
+
SAFE_IDENTIFIER,
|
|
23
|
+
propertyAccess
|
|
24
|
+
} = require("../util/property");
|
|
19
25
|
const { getEntryRuntime, getRuntimeKey } = require("../util/runtime");
|
|
20
26
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
21
27
|
|
|
22
|
-
/** @
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/** @
|
|
31
|
-
/** @
|
|
32
|
-
/** @
|
|
33
|
-
/** @
|
|
34
|
-
/** @
|
|
35
|
-
/**
|
|
36
|
-
|
|
28
|
+
/** @import { Source } from "webpack-sources" */
|
|
29
|
+
/**
|
|
30
|
+
* @import {
|
|
31
|
+
* LibraryOptions,
|
|
32
|
+
* LibraryType,
|
|
33
|
+
* LibraryExport
|
|
34
|
+
* } from "../../declarations/WebpackOptions"
|
|
35
|
+
*/
|
|
36
|
+
/** @import Chunk from "../Chunk" */
|
|
37
|
+
/** @import Compilation from "../Compilation" */
|
|
38
|
+
/** @import Compiler from "../Compiler" */
|
|
39
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
40
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
41
|
+
/**
|
|
42
|
+
* @import {
|
|
43
|
+
* StartupRenderContext,
|
|
44
|
+
* ModuleRenderContext
|
|
45
|
+
* } from "../javascript/JavascriptModulesPlugin"
|
|
46
|
+
*/
|
|
47
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
48
|
+
/**
|
|
49
|
+
* @import {
|
|
50
|
+
* JavascriptModuleBuildMeta
|
|
51
|
+
* } from "../javascript/JavascriptModule"
|
|
52
|
+
*/
|
|
37
53
|
|
|
38
54
|
/**
|
|
39
55
|
* Defines the shared type used by this module.
|
|
@@ -56,6 +72,64 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
|
56
72
|
|
|
57
73
|
const PLUGIN_NAME = "ModuleLibraryPlugin";
|
|
58
74
|
|
|
75
|
+
/**
|
|
76
|
+
* The entry modules this plugin renders `export { … }` for, per compilation — the
|
|
77
|
+
* only ones whose export definitions may be taken over.
|
|
78
|
+
* @type {WeakMap<Compilation, WeakSet<Module>>}
|
|
79
|
+
*/
|
|
80
|
+
const libraryEntryModules = new WeakMap();
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Whether every export the module defines is a binding the library can export
|
|
84
|
+
* natively, so the definitions written into the exports object are read by nobody.
|
|
85
|
+
* A re-export or a renamed import is not: `renderStartup` reads those back off the
|
|
86
|
+
* object, and `treatAsCommonJs` hands the object out as the default export.
|
|
87
|
+
* @param {Module} module the entry module
|
|
88
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
89
|
+
* @returns {boolean} true when the definitions may be taken over
|
|
90
|
+
*/
|
|
91
|
+
const definesOnlyNativeExports = (module, moduleGraph) => {
|
|
92
|
+
const buildMeta = /** @type {JavascriptModuleBuildMeta} */ (module.buildMeta);
|
|
93
|
+
if (buildMeta && buildMeta.treatAsCommonJs) return false;
|
|
94
|
+
// A top-level `await` wraps the body in `__webpack_require__.a`, and the
|
|
95
|
+
// definitions read declarations inside that wrapper — re-emitting them after the
|
|
96
|
+
// module would put them out of scope.
|
|
97
|
+
if (moduleGraph.isAsync(module)) return false;
|
|
98
|
+
const topLevelDeclarations =
|
|
99
|
+
module.buildInfo && module.buildInfo.topLevelDeclarations;
|
|
100
|
+
if (!topLevelDeclarations) return false;
|
|
101
|
+
for (const dep of module.dependencies) {
|
|
102
|
+
// A re-export or an `export default` has no declaration of its own to bind to,
|
|
103
|
+
// so `renderStartup` reads its value back off the exports object.
|
|
104
|
+
if (
|
|
105
|
+
dep instanceof HarmonyExportImportedSpecifierDependency ||
|
|
106
|
+
dep instanceof HarmonyExportExpressionDependency
|
|
107
|
+
) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
if (!(dep instanceof HarmonyExportSpecifierDependency)) continue;
|
|
111
|
+
if (!topLevelDeclarations.has(dep.id)) return false;
|
|
112
|
+
}
|
|
113
|
+
return true;
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* An export name is either an identifier name (reserved words included, e.g.
|
|
118
|
+
* `default`) or a string literal (arbitrary module namespace names).
|
|
119
|
+
* @param {string} name export name
|
|
120
|
+
* @returns {string} name as it can be written after `as`
|
|
121
|
+
*/
|
|
122
|
+
const toExportName = (name) =>
|
|
123
|
+
SAFE_IDENTIFIER.test(name) ? name : JSON.stringify(name);
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Whether the export name can also be used as the declared binding name.
|
|
127
|
+
* @param {string} name export name
|
|
128
|
+
* @returns {boolean} true, when the name can be declared
|
|
129
|
+
*/
|
|
130
|
+
const isDeclarableExportName = (name) =>
|
|
131
|
+
SAFE_IDENTIFIER.test(name) && !RESERVED_IDENTIFIER.has(name);
|
|
132
|
+
|
|
59
133
|
/**
|
|
60
134
|
* Represents the module library plugin runtime component.
|
|
61
135
|
* @typedef {ModuleLibraryPluginParsed} T
|
|
@@ -111,6 +185,36 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
111
185
|
return true;
|
|
112
186
|
}
|
|
113
187
|
);
|
|
188
|
+
// The same for a plain entry, whose definitions come from a dependency template.
|
|
189
|
+
// Placed after the module body, which its value bindings read.
|
|
190
|
+
javascriptHooks.onDemandExportsGeneration.tap(
|
|
191
|
+
PLUGIN_NAME,
|
|
192
|
+
(module, runtime, source, placeAtEnd) => {
|
|
193
|
+
const entries = libraryEntryModules.get(compilation);
|
|
194
|
+
if (!entries || !entries.has(module)) return;
|
|
195
|
+
if (!definesOnlyNativeExports(module, compilation.moduleGraph)) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
/** @type {BuildMeta} */
|
|
199
|
+
const buildMeta = module.buildMeta || (module.buildMeta = {});
|
|
200
|
+
const key = getRuntimeKey(runtime);
|
|
201
|
+
if (placeAtEnd) {
|
|
202
|
+
const bindings =
|
|
203
|
+
buildMeta.exportsBindingSourceByRuntime ||
|
|
204
|
+
(buildMeta.exportsBindingSourceByRuntime = new Map());
|
|
205
|
+
bindings.set(key, source);
|
|
206
|
+
} else {
|
|
207
|
+
const sources =
|
|
208
|
+
buildMeta.exportsSourceByRuntime ||
|
|
209
|
+
(buildMeta.exportsSourceByRuntime = new Map());
|
|
210
|
+
// The `__esModule` marker and the definitions both land here, so
|
|
211
|
+
// keep whichever arrived first rather than replacing it.
|
|
212
|
+
const before = sources.get(key);
|
|
213
|
+
sources.set(key, before ? `${before}${source}` : source);
|
|
214
|
+
}
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
);
|
|
114
218
|
|
|
115
219
|
// `ModuleLibraryPlugin` stashes the on-demand exports source via
|
|
116
220
|
// `onDemandExportsGeneration` and only re-emits it when the
|
|
@@ -124,7 +228,6 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
124
228
|
(chunk, set, { chunkGraph, codeGenerationResults }) => {
|
|
125
229
|
if (!set.has(RuntimeGlobals.definePropertyGetters)) return;
|
|
126
230
|
if (chunkGraph.getNumberOfEntryModules(chunk) !== 1) return;
|
|
127
|
-
if (chunkGraph.hasChunkEntryDependentChunks(chunk)) return;
|
|
128
231
|
if (
|
|
129
232
|
set.has(RuntimeGlobals.moduleFactories) ||
|
|
130
233
|
set.has(RuntimeGlobals.moduleCache) ||
|
|
@@ -137,14 +240,16 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
137
240
|
if (javascriptHooks.inlineInRuntimeBailout.isUsed()) return;
|
|
138
241
|
|
|
139
242
|
const [module] = chunkGraph.getChunkEntryModulesIterable(chunk);
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
243
|
+
const runtimeKey = getRuntimeKey(chunk.runtime);
|
|
244
|
+
const buildMeta = module.buildMeta;
|
|
245
|
+
const takenOver =
|
|
246
|
+
(buildMeta &&
|
|
247
|
+
buildMeta.exportsSourceByRuntime &&
|
|
248
|
+
buildMeta.exportsSourceByRuntime.has(runtimeKey)) ||
|
|
249
|
+
(buildMeta &&
|
|
250
|
+
buildMeta.exportsBindingSourceByRuntime &&
|
|
251
|
+
buildMeta.exportsBindingSourceByRuntime.has(runtimeKey));
|
|
252
|
+
if (!takenOver) return;
|
|
148
253
|
const codeGenResult = codeGenerationResults.get(
|
|
149
254
|
module,
|
|
150
255
|
chunk.runtime
|
|
@@ -158,32 +263,63 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
158
263
|
return;
|
|
159
264
|
}
|
|
160
265
|
|
|
161
|
-
//
|
|
162
|
-
// the
|
|
266
|
+
// Without `avoidEntryIife`, another rendered module wraps the entry in
|
|
267
|
+
// an IIFE, which re-emits the stashed source — its helpers stay.
|
|
268
|
+
if (!compilation.options.optimization.avoidEntryIife) {
|
|
269
|
+
for (const m of chunkGraph.getChunkModulesIterableBySourceType(
|
|
270
|
+
chunk,
|
|
271
|
+
JAVASCRIPT_TYPE
|
|
272
|
+
) || []) {
|
|
273
|
+
if (m !== module) return;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// The helpers land in the runtime, not in this chunk, so what still
|
|
278
|
+
// needs them is asked of every chunk sharing the entrypoint — the
|
|
279
|
+
// runtime chunk, and whatever `splitChunks` moved out of the entry.
|
|
280
|
+
/** @type {Set<Chunk>} */
|
|
281
|
+
const siblings = new Set([chunk]);
|
|
282
|
+
for (const [
|
|
283
|
+
,
|
|
284
|
+
entrypoint
|
|
285
|
+
] of chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)) {
|
|
286
|
+
if (!entrypoint) continue;
|
|
287
|
+
for (const sibling of entrypoint.chunks) siblings.add(sibling);
|
|
288
|
+
}
|
|
289
|
+
|
|
163
290
|
let otherNeedsDefine = false;
|
|
291
|
+
let otherNeedsNamespaceObject = false;
|
|
164
292
|
let otherNeedsExports = false;
|
|
165
293
|
let otherNeedsRequireScope = false;
|
|
166
|
-
for (const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
294
|
+
outer: for (const sibling of siblings) {
|
|
295
|
+
for (const m of chunkGraph.getChunkModulesIterable(sibling)) {
|
|
296
|
+
if (m === module) continue;
|
|
297
|
+
const requirements = chunkGraph.getModuleRuntimeRequirements(
|
|
298
|
+
m,
|
|
299
|
+
sibling.runtime
|
|
300
|
+
);
|
|
301
|
+
if (!requirements) continue;
|
|
302
|
+
if (requirements.has(RuntimeGlobals.definePropertyGetters)) {
|
|
303
|
+
otherNeedsDefine = true;
|
|
304
|
+
}
|
|
305
|
+
if (requirements.has(RuntimeGlobals.makeNamespaceObject)) {
|
|
306
|
+
otherNeedsNamespaceObject = true;
|
|
307
|
+
}
|
|
308
|
+
if (requirements.has(RuntimeGlobals.exports)) {
|
|
309
|
+
otherNeedsExports = true;
|
|
310
|
+
}
|
|
311
|
+
if (requirements.has(RuntimeGlobals.requireScope)) {
|
|
312
|
+
otherNeedsRequireScope = true;
|
|
313
|
+
}
|
|
314
|
+
if (otherNeedsDefine) break outer;
|
|
181
315
|
}
|
|
182
|
-
if (otherNeedsDefine) break;
|
|
183
316
|
}
|
|
184
317
|
|
|
185
318
|
if (otherNeedsDefine) return;
|
|
186
319
|
set.delete(RuntimeGlobals.definePropertyGetters);
|
|
320
|
+
if (!otherNeedsNamespaceObject) {
|
|
321
|
+
set.delete(RuntimeGlobals.makeNamespaceObject);
|
|
322
|
+
}
|
|
187
323
|
if (!otherNeedsExports) set.delete(RuntimeGlobals.exports);
|
|
188
324
|
if (!otherNeedsRequireScope) set.delete(RuntimeGlobals.requireScope);
|
|
189
325
|
}
|
|
@@ -232,6 +368,12 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
232
368
|
}
|
|
233
369
|
}
|
|
234
370
|
moduleGraph.addExtraReason(module, "used as library export");
|
|
371
|
+
let entries = libraryEntryModules.get(compilation);
|
|
372
|
+
if (entries === undefined) {
|
|
373
|
+
entries = new WeakSet();
|
|
374
|
+
libraryEntryModules.set(compilation, entries);
|
|
375
|
+
}
|
|
376
|
+
entries.add(module);
|
|
235
377
|
}
|
|
236
378
|
|
|
237
379
|
/**
|
|
@@ -398,6 +540,23 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
398
540
|
const exports = [];
|
|
399
541
|
/** @type {Set<string>} */
|
|
400
542
|
const alreadyRenderedExports = new Set();
|
|
543
|
+
/** @type {Set<string>} */
|
|
544
|
+
const usedLocalNames = new Set();
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* `toIdentifier` is lossy, so distinct export names (`"a b"` and `"a-b"`)
|
|
548
|
+
* would otherwise be bound to the same generated name twice.
|
|
549
|
+
* @param {string} exportName export name
|
|
550
|
+
* @returns {string} unique local name for the export
|
|
551
|
+
*/
|
|
552
|
+
const toLocalName = (exportName) => {
|
|
553
|
+
const base = `${RuntimeGlobals.exports}${Template.toIdentifier(exportName)}`;
|
|
554
|
+
let name = base;
|
|
555
|
+
let i = 0;
|
|
556
|
+
while (usedLocalNames.has(name)) name = `${base}_${i++}`;
|
|
557
|
+
usedLocalNames.add(name);
|
|
558
|
+
return name;
|
|
559
|
+
};
|
|
401
560
|
|
|
402
561
|
const isAsync = moduleGraph.isAsync(module);
|
|
403
562
|
|
|
@@ -434,6 +593,16 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
434
593
|
}
|
|
435
594
|
}
|
|
436
595
|
|
|
596
|
+
// Taken over by `onDemandExportsGeneration` above, and re-emitted by
|
|
597
|
+
// `renderModuleContent` only where the module is wrapped — which is not here.
|
|
598
|
+
const bindingsTakenOver = Boolean(
|
|
599
|
+
module.buildMeta &&
|
|
600
|
+
module.buildMeta.exportsBindingSourceByRuntime &&
|
|
601
|
+
module.buildMeta.exportsBindingSourceByRuntime.has(
|
|
602
|
+
getRuntimeKey(chunk.runtime)
|
|
603
|
+
)
|
|
604
|
+
);
|
|
605
|
+
|
|
437
606
|
const moduleExportsInfo = moduleGraph.getExportsInfo(module);
|
|
438
607
|
|
|
439
608
|
// Define ESM compatibility flag will rely on `__webpack_exports__`
|
|
@@ -463,13 +632,16 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
463
632
|
|
|
464
633
|
// Try to find all exports from the reexported modules
|
|
465
634
|
const target = exportInfo.findTarget(moduleGraph, (_m) => true);
|
|
466
|
-
|
|
635
|
+
// A namespace object target (`export * as ns from "./module"`) has no
|
|
636
|
+
// export name, so there is nothing that could be missing
|
|
637
|
+
if (target && target.export) {
|
|
638
|
+
const targetExport = target.export[0];
|
|
467
639
|
const reexportsInfo = moduleGraph.getExportsInfo(target.module);
|
|
468
640
|
for (const reexportInfo of reexportsInfo.orderedExports) {
|
|
469
641
|
if (
|
|
470
642
|
reexportInfo.provided === false &&
|
|
471
643
|
reexportInfo.name !== "default" &&
|
|
472
|
-
reexportInfo.name ===
|
|
644
|
+
reexportInfo.name === targetExport
|
|
473
645
|
) {
|
|
474
646
|
continue outer;
|
|
475
647
|
}
|
|
@@ -495,11 +667,13 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
495
667
|
} else if (directLocal !== undefined) {
|
|
496
668
|
// Live binding to the inlined entry's own top-level declaration
|
|
497
669
|
finalName = directLocal;
|
|
498
|
-
|
|
670
|
+
// The declaration is only there for the definitions written into it; with
|
|
671
|
+
// those taken over (and not re-emitted here) nothing reads the object.
|
|
672
|
+
if (!bindingsTakenOver) needExportsDeclaration = true;
|
|
499
673
|
} else {
|
|
500
674
|
// Fallback to `__webpack_exports__` property access
|
|
501
675
|
// when no direct export binding was found
|
|
502
|
-
finalName =
|
|
676
|
+
finalName = toLocalName(originalName);
|
|
503
677
|
needExportsDeclaration = true;
|
|
504
678
|
result.add(
|
|
505
679
|
`${runtimeTemplate.renderConst()} ${finalName} = ${RuntimeGlobals.exports}${propertyAccess(
|
|
@@ -522,11 +696,11 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
522
696
|
(module.buildInfo && module.buildInfo.topLevelDeclarations);
|
|
523
697
|
|
|
524
698
|
if (topLevelDeclarations && topLevelDeclarations.has(originalName)) {
|
|
525
|
-
const name =
|
|
699
|
+
const name = toLocalName(originalName);
|
|
526
700
|
result.add(
|
|
527
701
|
`${runtimeTemplate.renderConst()} ${name} = ${finalName};\n`
|
|
528
702
|
);
|
|
529
|
-
shortHandedExports.push(`${name} as ${originalName}`);
|
|
703
|
+
shortHandedExports.push(`${name} as ${toExportName(originalName)}`);
|
|
530
704
|
} else {
|
|
531
705
|
exports.push([originalName, finalName]);
|
|
532
706
|
}
|
|
@@ -537,21 +711,21 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
537
711
|
shortHandedExports.push(
|
|
538
712
|
finalName === originalName
|
|
539
713
|
? finalName
|
|
540
|
-
: `${finalName} as ${originalName}`
|
|
714
|
+
: `${finalName} as ${toExportName(originalName)}`
|
|
541
715
|
);
|
|
542
716
|
}
|
|
543
717
|
|
|
544
718
|
alreadyRenderedExports.add(originalName);
|
|
545
719
|
}
|
|
546
720
|
|
|
721
|
+
if (shortHandedExports.length > 0) {
|
|
722
|
+
result.add(`export { ${shortHandedExports.join(", ")} };\n`);
|
|
723
|
+
}
|
|
724
|
+
|
|
547
725
|
// Add default export `__webpack_exports__` statement to keep better compatibility
|
|
548
726
|
if (treatAsCommonJs) {
|
|
549
727
|
needExportsDeclaration = true;
|
|
550
|
-
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
if (shortHandedExports.length > 0) {
|
|
554
|
-
result.add(`export { ${shortHandedExports.join(", ")} };\n`);
|
|
728
|
+
result.add(`export default ${RuntimeGlobals.exports};\n`);
|
|
555
729
|
}
|
|
556
730
|
|
|
557
731
|
result = this._analyzeUnknownProvidedExports(
|
|
@@ -564,8 +738,16 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
564
738
|
);
|
|
565
739
|
|
|
566
740
|
for (const [exportName, final] of exports) {
|
|
741
|
+
if (isDeclarableExportName(exportName)) {
|
|
742
|
+
result.add(
|
|
743
|
+
`export ${runtimeTemplate.renderConst()} ${exportName} = ${final};\n`
|
|
744
|
+
);
|
|
745
|
+
continue;
|
|
746
|
+
}
|
|
747
|
+
// Bind to a generated name, the export name can't be declared
|
|
748
|
+
const name = toLocalName(exportName);
|
|
567
749
|
result.add(
|
|
568
|
-
|
|
750
|
+
`${runtimeTemplate.renderConst()} ${name} = ${final};\nexport { ${name} as ${toExportName(exportName)} };\n`
|
|
569
751
|
);
|
|
570
752
|
}
|
|
571
753
|
|
|
@@ -590,15 +772,25 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
590
772
|
{ factory, inlinedInIIFE, chunk },
|
|
591
773
|
libraryContext
|
|
592
774
|
) {
|
|
775
|
+
const runtimeKey = getRuntimeKey(chunk.runtime);
|
|
776
|
+
const buildMeta = module.buildMeta;
|
|
593
777
|
const exportsSource =
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
778
|
+
buildMeta &&
|
|
779
|
+
buildMeta.exportsSourceByRuntime &&
|
|
780
|
+
buildMeta.exportsSourceByRuntime.get(runtimeKey);
|
|
781
|
+
const bindingSource =
|
|
782
|
+
buildMeta &&
|
|
783
|
+
buildMeta.exportsBindingSourceByRuntime &&
|
|
784
|
+
buildMeta.exportsBindingSourceByRuntime.get(runtimeKey);
|
|
785
|
+
|
|
786
|
+
// Re-add the exports source in a factory or IIFE-wrapped startup module; value
|
|
787
|
+
// bindings read the declarations above them, so those go after the body.
|
|
788
|
+
if ((inlinedInIIFE || factory) && (exportsSource || bindingSource)) {
|
|
789
|
+
return new ConcatSource(
|
|
790
|
+
...(exportsSource ? [exportsSource] : []),
|
|
791
|
+
source,
|
|
792
|
+
...(bindingSource ? ["\n", bindingSource] : [])
|
|
793
|
+
);
|
|
602
794
|
}
|
|
603
795
|
return source;
|
|
604
796
|
}
|
|
@@ -12,14 +12,18 @@ const Template = require("../Template");
|
|
|
12
12
|
const { propertyAccess } = require("../util/property");
|
|
13
13
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
14
14
|
|
|
15
|
-
/** @
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
/** @
|
|
15
|
+
/** @import { Source } from "webpack-sources" */
|
|
16
|
+
/**
|
|
17
|
+
* @import {
|
|
18
|
+
* LibraryOptions,
|
|
19
|
+
* LibraryType
|
|
20
|
+
* } from "../../declarations/WebpackOptions"
|
|
21
|
+
*/
|
|
22
|
+
/** @import Chunk from "../Chunk" */
|
|
23
|
+
/** @import { ChunkHashContext } from "../Compilation" */
|
|
24
|
+
/** @import { ExportInfoName } from "../Dependency" */
|
|
25
|
+
/** @import { RenderContext } from "../javascript/JavascriptModulesPlugin" */
|
|
26
|
+
/** @import Hash from "../util/Hash" */
|
|
23
27
|
/**
|
|
24
28
|
* Defines the shared type used by this module.
|
|
25
29
|
* @template T
|
|
@@ -10,14 +10,18 @@ const ExternalModule = require("../ExternalModule");
|
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
12
12
|
|
|
13
|
-
/** @
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
/** @import { Source } from "webpack-sources" */
|
|
14
|
+
/**
|
|
15
|
+
* @import {
|
|
16
|
+
* LibraryCustomUmdCommentObject,
|
|
17
|
+
* LibraryCustomUmdObject,
|
|
18
|
+
* LibraryName,
|
|
19
|
+
* LibraryOptions,
|
|
20
|
+
* LibraryType
|
|
21
|
+
* } from "../../declarations/WebpackOptions"
|
|
22
|
+
*/
|
|
23
|
+
/** @import { RenderContext } from "../javascript/JavascriptModulesPlugin" */
|
|
24
|
+
/** @import { RequestRecord } from "../ExternalModule" */
|
|
21
25
|
|
|
22
26
|
/**
|
|
23
27
|
* Defines the shared type used by this module.
|
|
@@ -58,6 +62,24 @@ const accessorAccess = (base, accessor, joinWith = ", ") => {
|
|
|
58
62
|
.join(joinWith);
|
|
59
63
|
};
|
|
60
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Builds the guard for an AMD-style loader on a container object, e.g. `sap.ui` becomes
|
|
67
|
+
* `typeof sap !== 'undefined' && sap.ui && typeof sap.ui.define === 'function'`. The path is
|
|
68
|
+
* walked step by step because `typeof sap.ui` alone throws when `sap` is undeclared, which is
|
|
69
|
+
* exactly when the branch has to be skipped.
|
|
70
|
+
* @param {string} container the container object holding `define`
|
|
71
|
+
* @returns {string} the condition
|
|
72
|
+
*/
|
|
73
|
+
const amdContainerCondition = (container) => {
|
|
74
|
+
const path = container.split(".");
|
|
75
|
+
const conditions = [`typeof ${path[0]} !== 'undefined'`];
|
|
76
|
+
for (let i = 1; i < path.length; i++) {
|
|
77
|
+
conditions.push(path.slice(0, i + 1).join("."));
|
|
78
|
+
}
|
|
79
|
+
conditions.push(`typeof ${container}.define === 'function'`);
|
|
80
|
+
return conditions.join(" && ");
|
|
81
|
+
};
|
|
82
|
+
|
|
61
83
|
/**
|
|
62
84
|
* Defines the umd library plugin options type used by this module.
|
|
63
85
|
* @typedef {object} UmdLibraryPluginOptions
|
|
@@ -72,6 +94,7 @@ const accessorAccess = (base, accessor, joinWith = ", ") => {
|
|
|
72
94
|
* @property {LibraryCustomUmdObject} names
|
|
73
95
|
* @property {string | LibraryCustomUmdCommentObject | undefined} auxiliaryComment
|
|
74
96
|
* @property {boolean | undefined} namedDefine
|
|
97
|
+
* @property {string | undefined} amdContainer
|
|
75
98
|
*/
|
|
76
99
|
|
|
77
100
|
/**
|
|
@@ -120,7 +143,8 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
120
143
|
name,
|
|
121
144
|
names,
|
|
122
145
|
auxiliaryComment: library.auxiliaryComment,
|
|
123
|
-
namedDefine: library.umdNamedDefine
|
|
146
|
+
namedDefine: library.umdNamedDefine,
|
|
147
|
+
amdContainer: library.umdAmdContainer
|
|
124
148
|
};
|
|
125
149
|
}
|
|
126
150
|
|
|
@@ -233,9 +257,9 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
233
257
|
);
|
|
234
258
|
}
|
|
235
259
|
let expr = Array.isArray(request)
|
|
236
|
-
? `require(${JSON.stringify(
|
|
237
|
-
request
|
|
238
|
-
)}
|
|
260
|
+
? `require(${JSON.stringify(request[0])})${accessorToObjectAccess(
|
|
261
|
+
request.slice(1)
|
|
262
|
+
)}`
|
|
239
263
|
: `require(${JSON.stringify(request)})`;
|
|
240
264
|
if (m.isOptional(moduleGraph)) {
|
|
241
265
|
expr = `(function webpackLoadOptionalExternalModule() { try { return ${expr}; } catch(e) {} }())`;
|
|
@@ -291,7 +315,24 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
291
315
|
amdFactory = "factory";
|
|
292
316
|
}
|
|
293
317
|
|
|
294
|
-
const { auxiliaryComment, namedDefine, names } = options;
|
|
318
|
+
const { amdContainer, auxiliaryComment, namedDefine, names } = options;
|
|
319
|
+
|
|
320
|
+
/**
|
|
321
|
+
* Returns a call to an AMD-style define function.
|
|
322
|
+
* @param {string} defineFunction the define function to call
|
|
323
|
+
* @returns {string} the define call
|
|
324
|
+
*/
|
|
325
|
+
const defineCall = (defineFunction) => {
|
|
326
|
+
const deps =
|
|
327
|
+
requiredExternals.length > 0
|
|
328
|
+
? externalsDepsArray(requiredExternals)
|
|
329
|
+
: "[]";
|
|
330
|
+
return names.amd && namedDefine === true
|
|
331
|
+
? ` ${defineFunction}(${libraryName(
|
|
332
|
+
names.amd
|
|
333
|
+
)}, ${deps}, ${amdFactory});\n`
|
|
334
|
+
: ` ${defineFunction}(${deps}, ${amdFactory});\n`;
|
|
335
|
+
};
|
|
295
336
|
|
|
296
337
|
/**
|
|
297
338
|
* Gets auxiliary comment.
|
|
@@ -317,18 +358,14 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
317
358
|
"commonjs2"
|
|
318
359
|
)});\n${getAuxiliaryComment(
|
|
319
360
|
"amd"
|
|
320
|
-
)} else if(typeof define === 'function' && define.amd)\n${
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
});\n`
|
|
329
|
-
: names.amd && namedDefine === true
|
|
330
|
-
? ` define(${libraryName(names.amd)}, [], ${amdFactory});\n`
|
|
331
|
-
: ` define([], ${amdFactory});\n`
|
|
361
|
+
)} else if(typeof define === 'function' && define.amd)\n${defineCall(
|
|
362
|
+
"define"
|
|
363
|
+
)}${
|
|
364
|
+
amdContainer
|
|
365
|
+
? ` else if(${amdContainerCondition(
|
|
366
|
+
amdContainer
|
|
367
|
+
)})\n${defineCall(`${amdContainer}.define`)}`
|
|
368
|
+
: ""
|
|
332
369
|
}${
|
|
333
370
|
names.root || names.commonjs
|
|
334
371
|
? `${getAuxiliaryComment(
|