@depup/webpack 5.109.2-depup.0 → 5.110.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +26 -17
- 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 +117 -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 +50 -13
- 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 +101 -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 +32 -47
- 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 +141 -85
- 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 +332 -169
- package/lib/RuntimeTemplate.js +2792 -352
- 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 +2 -2
- 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 +261 -79
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -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 +57 -24
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +168 -88
- 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 +5324 -0
- package/lib/css/syntax.js +9579 -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 +156 -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 +4 -4
- 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 +13 -10
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
- 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 +27 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -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 +37 -29
- 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 +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- 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 +49 -35
- 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 +51 -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 +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- 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/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/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 +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -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 +282 -162
- 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 +5557 -1155
- 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 +98 -113
- 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 +14 -1
- 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 +72 -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 +985 -470
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -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 +10 -6
- 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 -78
- 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 +1 -1
- 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 +23 -6
- 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 +24 -15
- 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 +7 -7
- 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 +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- 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 +1050 -24
- package/lib/util/StringXor.js +1 -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 +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- 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 +6 -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/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 +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -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 +34 -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 +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -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 +670 -36
- 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 +3144 -454
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -9,7 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Provides a single object URL (one per base URI) for the worklet bootstrap
|
|
@@ -23,6 +23,16 @@ class GetWorkletBootstrapRuntimeModule extends RuntimeModule {
|
|
|
23
23
|
super("get worklet bootstrap", RuntimeModule.STAGE_ATTACH);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
28
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
29
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
30
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
31
|
+
*/
|
|
32
|
+
shouldIsolate() {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
26
36
|
/**
|
|
27
37
|
* Generates runtime code for this runtime module.
|
|
28
38
|
* @returns {string | null} runtime code
|
|
@@ -38,8 +48,11 @@ class GetWorkletBootstrapRuntimeModule extends RuntimeModule {
|
|
|
38
48
|
Template.indent([
|
|
39
49
|
"var script = [",
|
|
40
50
|
Template.indent([
|
|
41
|
-
// worklet scopes have no `self`; chunks assume a worker-like scope
|
|
42
|
-
|
|
51
|
+
// worklet scopes have no `self`; chunks assume a worker-like scope.
|
|
52
|
+
// `||=` is newer than worklets themselves, so it stays gated.
|
|
53
|
+
`${JSON.stringify(
|
|
54
|
+
`${runtimeTemplate.assignOr("globalThis.self", "globalThis")};`
|
|
55
|
+
)},`,
|
|
43
56
|
// some runtime modules read `location`; forward the document base
|
|
44
57
|
'"globalThis.location = " + JSON.stringify(base) + ";"'
|
|
45
58
|
]),
|
|
@@ -8,16 +8,34 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
10
|
|
|
11
|
+
/** @typedef {import("../Compilation")} Compilation */
|
|
12
|
+
|
|
11
13
|
class GlobalRuntimeModule extends RuntimeModule {
|
|
12
14
|
constructor() {
|
|
13
15
|
super("global");
|
|
14
16
|
}
|
|
15
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
16
28
|
/**
|
|
17
29
|
* Generates runtime code for this runtime module.
|
|
18
30
|
* @returns {string | null} runtime code
|
|
19
31
|
*/
|
|
20
32
|
generate() {
|
|
33
|
+
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
34
|
+
// `environment.globalThis` promises the binding is there, so nothing has to
|
|
35
|
+
// be searched for.
|
|
36
|
+
if (compilation.outputOptions.environment.globalThis) {
|
|
37
|
+
return `${RuntimeGlobals.global} = globalThis;`;
|
|
38
|
+
}
|
|
21
39
|
return Template.asString([
|
|
22
40
|
`${RuntimeGlobals.global} = (function() {`,
|
|
23
41
|
Template.indent([
|
|
@@ -9,13 +9,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
13
13
|
|
|
14
14
|
class HasOwnPropertyRuntimeModule extends RuntimeModule {
|
|
15
15
|
constructor() {
|
|
16
16
|
super("hasOwnProperty shorthand");
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
21
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
22
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
23
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
24
|
+
*/
|
|
25
|
+
shouldIsolate() {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
|
|
19
29
|
/**
|
|
20
30
|
* Generates runtime code for this runtime module.
|
|
21
31
|
* @returns {string | null} runtime code
|
|
@@ -28,7 +38,7 @@ class HasOwnPropertyRuntimeModule extends RuntimeModule {
|
|
|
28
38
|
`${RuntimeGlobals.hasOwnProperty} = ${runtimeTemplate.returningFunction(
|
|
29
39
|
runtimeTemplate.objectHasOwn("obj", "prop"),
|
|
30
40
|
"obj, prop"
|
|
31
|
-
)}
|
|
41
|
+
)};`
|
|
32
42
|
]);
|
|
33
43
|
}
|
|
34
44
|
}
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
const { SyncWaterfallHook } = require("tapable");
|
|
8
|
-
/** @
|
|
8
|
+
/** @import Compilation from "../Compilation" */
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
const createHooksRegistry = require("../util/createHooksRegistry");
|
|
12
12
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
13
13
|
|
|
14
|
-
/** @
|
|
14
|
+
/** @import Chunk from "../Chunk" */
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* @typedef {object} LoadScriptCompilationHooks
|
|
@@ -9,12 +9,9 @@ const Template = require("../Template");
|
|
|
9
9
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
10
10
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
16
|
-
/** @typedef {import("../Module").ExportsType} ExportsType */
|
|
17
|
-
/** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
|
|
12
|
+
/** @import { ModuleId } from "../ChunkGraph" */
|
|
13
|
+
/** @import Module, { RuntimeRequirements, ExportsType } from "../Module" */
|
|
14
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
18
15
|
|
|
19
16
|
/**
|
|
20
17
|
* @typedef {object} DeferredCycleState
|
|
@@ -224,6 +221,16 @@ function getOptimizedDeferredModule(
|
|
|
224
221
|
}
|
|
225
222
|
|
|
226
223
|
class MakeOptimizedDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
224
|
+
/**
|
|
225
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
226
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
227
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
228
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
229
|
+
*/
|
|
230
|
+
shouldIsolate() {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
|
|
227
234
|
/**
|
|
228
235
|
* @param {boolean} hasAsyncRuntime if async module is used.
|
|
229
236
|
*/
|
|
@@ -293,6 +300,16 @@ class MakeOptimizedDeferredNamespaceObjectRuntimeModule extends HelperRuntimeMod
|
|
|
293
300
|
}
|
|
294
301
|
|
|
295
302
|
class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
303
|
+
/**
|
|
304
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
305
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
306
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
307
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
308
|
+
*/
|
|
309
|
+
shouldIsolate() {
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
|
|
296
313
|
/**
|
|
297
314
|
* @param {boolean} hasAsyncRuntime if async module is used.
|
|
298
315
|
*/
|
|
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class MakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
constructor() {
|
|
15
15
|
super("make namespace object");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Generates runtime code for this runtime module.
|
|
20
30
|
* @returns {string | null} runtime code
|
|
@@ -23,14 +33,20 @@ class MakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
|
|
|
23
33
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
24
34
|
const { runtimeTemplate } = compilation;
|
|
25
35
|
const fn = RuntimeGlobals.makeNamespaceObject;
|
|
36
|
+
const toStringTag =
|
|
37
|
+
"Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });";
|
|
26
38
|
return Template.asString([
|
|
27
39
|
"// define __esModule on exports",
|
|
28
40
|
`${fn} = ${runtimeTemplate.basicFunction("exports", [
|
|
29
|
-
`
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
// `environment.symbol` promises the well-known symbols too, so only an
|
|
42
|
+
// environment without it needs the feature test around the tag.
|
|
43
|
+
...(runtimeTemplate.supportsSymbol()
|
|
44
|
+
? [toStringTag]
|
|
45
|
+
: [
|
|
46
|
+
"if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {",
|
|
47
|
+
Template.indent([toStringTag]),
|
|
48
|
+
"}"
|
|
49
|
+
]),
|
|
34
50
|
"Object.defineProperty(exports, '__esModule', { value: true });"
|
|
35
51
|
])};`
|
|
36
52
|
]);
|
|
@@ -13,6 +13,16 @@ class NonceRuntimeModule extends RuntimeModule {
|
|
|
13
13
|
super("nonce", RuntimeModule.STAGE_ATTACH);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
18
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
19
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
20
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
21
|
+
*/
|
|
22
|
+
shouldIsolate() {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
|
|
16
26
|
/**
|
|
17
27
|
* Generates runtime code for this runtime module.
|
|
18
28
|
* @returns {string | null} runtime code
|
|
@@ -8,7 +8,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
const Template = require("../Template");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
14
14
|
constructor() {
|
|
@@ -29,7 +29,7 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
|
29
29
|
[
|
|
30
30
|
"if(chunkIds) {",
|
|
31
31
|
Template.indent([
|
|
32
|
-
"priority
|
|
32
|
+
`${runtimeTemplate.assignOr("priority", "0")};`,
|
|
33
33
|
"for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];",
|
|
34
34
|
"deferred[i] = [chunkIds, fn, priority];",
|
|
35
35
|
"return;"
|
|
@@ -45,7 +45,9 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
|
|
|
45
45
|
`${runtimeTemplate.renderLet()} fulfilled = true;`,
|
|
46
46
|
"for (var j = 0; j < chunkIds.length; j++) {",
|
|
47
47
|
Template.indent([
|
|
48
|
-
|
|
48
|
+
// Parenthesized: `&` binds looser than `===`, so `priority & 1 === 0`
|
|
49
|
+
// is `priority & false` and gates every priority, not just the odd ones.
|
|
50
|
+
`if (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(${
|
|
49
51
|
RuntimeGlobals.onChunksLoaded
|
|
50
52
|
}).every(${runtimeTemplate.returningFunction(
|
|
51
53
|
`${RuntimeGlobals.onChunksLoaded}[key](chunkIds[j])`,
|
|
@@ -7,10 +7,20 @@
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
10
|
+
/** @import { PublicPath } from "../../declarations/WebpackOptions" */
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class PublicPathRuntimeModule extends RuntimeModule {
|
|
14
|
+
/**
|
|
15
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
16
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
17
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
18
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
19
|
+
*/
|
|
20
|
+
shouldIsolate() {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
|
|
14
24
|
/**
|
|
15
25
|
* @param {PublicPath} publicPath public path
|
|
16
26
|
*/
|
|
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class RelativeUrlRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
constructor() {
|
|
15
15
|
super("relative url");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Generates runtime code for this runtime module.
|
|
20
30
|
* @returns {string | null} runtime code
|
|
@@ -7,14 +7,24 @@
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
10
|
+
/** @import Chunk from "../Chunk" */
|
|
11
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
12
12
|
|
|
13
13
|
class RuntimeIdRuntimeModule extends RuntimeModule {
|
|
14
14
|
constructor() {
|
|
15
15
|
super("runtimeId");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Generates runtime code for this runtime module.
|
|
20
30
|
* @returns {string | null} runtime code
|
|
@@ -8,13 +8,23 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compilation from "../Compilation" */
|
|
12
12
|
|
|
13
13
|
class SetAnonymousDefaultNameRuntimeModule extends HelperRuntimeModule {
|
|
14
14
|
constructor() {
|
|
15
15
|
super("set anonymous default export name");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
20
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
21
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
22
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
23
|
+
*/
|
|
24
|
+
shouldIsolate() {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
|
|
18
28
|
/**
|
|
19
29
|
* Generates runtime code for this runtime module.
|
|
20
30
|
* @returns {string | null} runtime code
|
|
@@ -5,12 +5,19 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
|
-
const
|
|
9
|
-
const StartupEntrypointRuntimeModule = require("./StartupEntrypointRuntimeModule");
|
|
8
|
+
const lazyModule = require("../util/lazyModule");
|
|
10
9
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
10
|
+
/** @import { ChunkLoadingType } from "../../declarations/WebpackOptions" */
|
|
11
|
+
/** @import Chunk from "../Chunk" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
|
+
|
|
14
|
+
// only a chunk with startup dependencies emits these
|
|
15
|
+
const getStartupChunkDependenciesRuntimeModule = lazyModule(() =>
|
|
16
|
+
require("./StartupChunkDependenciesRuntimeModule")
|
|
17
|
+
);
|
|
18
|
+
const getStartupEntrypointRuntimeModule = lazyModule(() =>
|
|
19
|
+
require("./StartupEntrypointRuntimeModule")
|
|
20
|
+
);
|
|
14
21
|
|
|
15
22
|
/**
|
|
16
23
|
* Options that describe which chunk loading backend should receive startup
|
|
@@ -74,9 +81,10 @@ class StartupChunkDependenciesPlugin {
|
|
|
74
81
|
set.add(RuntimeGlobals.startup);
|
|
75
82
|
set.add(RuntimeGlobals.ensureChunk);
|
|
76
83
|
set.add(RuntimeGlobals.ensureChunkIncludeEntries);
|
|
77
|
-
compilation.
|
|
84
|
+
compilation.addLazyRuntimeModule(
|
|
78
85
|
chunk,
|
|
79
|
-
|
|
86
|
+
getStartupChunkDependenciesRuntimeModule,
|
|
87
|
+
(Ctor) => new Ctor(this.asyncChunkLoading)
|
|
80
88
|
);
|
|
81
89
|
}
|
|
82
90
|
}
|
|
@@ -88,9 +96,10 @@ class StartupChunkDependenciesPlugin {
|
|
|
88
96
|
set.add(RuntimeGlobals.require);
|
|
89
97
|
set.add(RuntimeGlobals.ensureChunk);
|
|
90
98
|
set.add(RuntimeGlobals.ensureChunkIncludeEntries);
|
|
91
|
-
compilation.
|
|
99
|
+
compilation.addLazyRuntimeModule(
|
|
92
100
|
chunk,
|
|
93
|
-
|
|
101
|
+
getStartupEntrypointRuntimeModule,
|
|
102
|
+
(Ctor) => new Ctor(this.asyncChunkLoading)
|
|
94
103
|
);
|
|
95
104
|
});
|
|
96
105
|
});
|
|
@@ -9,9 +9,9 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
12
|
+
/** @import Chunk from "../Chunk" */
|
|
13
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
14
|
+
/** @import Compilation from "../Compilation" */
|
|
15
15
|
|
|
16
16
|
class StartupChunkDependenciesRuntimeModule extends RuntimeModule {
|
|
17
17
|
/**
|
|
@@ -6,10 +6,22 @@
|
|
|
6
6
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const RuntimeModule = require("../RuntimeModule");
|
|
9
|
+
const { entryModuleIdExpression } = require("../javascript/StartupHelpers");
|
|
9
10
|
|
|
10
|
-
/** @
|
|
11
|
+
/** @import Chunk from "../Chunk" */
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
11
13
|
|
|
12
14
|
class StartupEntrypointRuntimeModule extends RuntimeModule {
|
|
15
|
+
/**
|
|
16
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
17
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
18
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
19
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
20
|
+
*/
|
|
21
|
+
shouldIsolate() {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
|
|
13
25
|
/**
|
|
14
26
|
* @param {boolean} asyncChunkLoading use async chunk loading
|
|
15
27
|
*/
|
|
@@ -25,7 +37,8 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
|
|
|
25
37
|
*/
|
|
26
38
|
generate() {
|
|
27
39
|
const compilation = /** @type {Compilation} */ (this.compilation);
|
|
28
|
-
const { runtimeTemplate } = compilation;
|
|
40
|
+
const { runtimeTemplate, chunkGraph } = compilation;
|
|
41
|
+
const chunk = /** @type {Chunk} */ (this.chunk);
|
|
29
42
|
const cst = runtimeTemplate.renderConst();
|
|
30
43
|
return `${
|
|
31
44
|
RuntimeGlobals.startupEntrypoint
|
|
@@ -33,7 +46,11 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
|
|
|
33
46
|
"// arguments: chunkIds, moduleId are deprecated",
|
|
34
47
|
`${cst} moduleId = chunkIds;`,
|
|
35
48
|
`if(!fn) chunkIds = result, fn = ${runtimeTemplate.returningFunction(
|
|
36
|
-
`${RuntimeGlobals.require}(${
|
|
49
|
+
`${RuntimeGlobals.require}(${entryModuleIdExpression(
|
|
50
|
+
chunkGraph,
|
|
51
|
+
chunk,
|
|
52
|
+
"moduleId"
|
|
53
|
+
)})`
|
|
37
54
|
)};`,
|
|
38
55
|
...(this.asyncChunkLoading
|
|
39
56
|
? [
|
|
@@ -49,7 +66,7 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
|
|
|
49
66
|
`${cst} r = fn();`,
|
|
50
67
|
"return r === undefined ? result : r;"
|
|
51
68
|
])
|
|
52
|
-
])}
|
|
69
|
+
])};`;
|
|
53
70
|
}
|
|
54
71
|
}
|
|
55
72
|
|
|
@@ -12,6 +12,16 @@ class SystemContextRuntimeModule extends RuntimeModule {
|
|
|
12
12
|
super("__system_context__");
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
17
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
18
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
19
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
20
|
+
*/
|
|
21
|
+
shouldIsolate() {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
|
|
15
25
|
/**
|
|
16
26
|
* Generates runtime code for this runtime module.
|
|
17
27
|
* @returns {string | null} runtime code
|
|
@@ -9,7 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
12
|
+
/** @import Compilation from "../Compilation" */
|
|
13
13
|
|
|
14
14
|
class ToBinaryRuntimeModule extends RuntimeModule {
|
|
15
15
|
constructor() {
|
|
@@ -7,13 +7,23 @@
|
|
|
7
7
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
8
8
|
const HelperRuntimeModule = require("./HelperRuntimeModule");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
10
|
+
/** @import Compilation from "../Compilation" */
|
|
11
11
|
|
|
12
12
|
class WorkerRuntimeModule extends HelperRuntimeModule {
|
|
13
13
|
constructor() {
|
|
14
14
|
super("worker");
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Returns true, if the runtime module should get it's own scope.
|
|
19
|
+
* When false, `generate()` must emit complete statements ending with `;`
|
|
20
|
+
* so a following runtime IIFE is not parsed as a call (ASI).
|
|
21
|
+
* @returns {boolean} true, if the runtime module should get it's own scope
|
|
22
|
+
*/
|
|
23
|
+
shouldIsolate() {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
|
|
17
27
|
/**
|
|
18
28
|
* Generates runtime code for this runtime module.
|
|
19
29
|
* @returns {string | null} runtime code
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
|
+
|
|
10
|
+
const SCHEME_REGEXP = /^[a-z][a-z\d+\-.]*:/i;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Whether `new URL(path, baseUri)` can resolve against it. Parsing is not the question:
|
|
14
|
+
* an opaque scheme like `data:` or `mailto:` is a valid url and still no base for
|
|
15
|
+
* anything, so the resolution itself is what gets asked.
|
|
16
|
+
* @param {string} baseUri an entry's base uri
|
|
17
|
+
* @returns {boolean} true when a relative path resolves against it
|
|
18
|
+
*/
|
|
19
|
+
const isAbsoluteBaseUri = (baseUri) => {
|
|
20
|
+
try {
|
|
21
|
+
// eslint-disable-next-line no-new
|
|
22
|
+
new URL("./", baseUri);
|
|
23
|
+
return true;
|
|
24
|
+
} catch (_error) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Whether a base names a place relative to the chunk, so a literal can spell it. A
|
|
31
|
+
* scheme makes it a base of its own, and a protocol-relative one takes its scheme from
|
|
32
|
+
* wherever the chunk was loaded — neither is something a literal can state.
|
|
33
|
+
* @param {string} baseUri an entry's base uri
|
|
34
|
+
* @returns {boolean} true when it can be baked beside the chunk
|
|
35
|
+
*/
|
|
36
|
+
const isChunkRelativeBaseUri = (baseUri) =>
|
|
37
|
+
!SCHEME_REGEXP.test(baseUri) && !baseUri.startsWith("//");
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Assignment of `__webpack_require__.b` for a chunk. An entry `baseUri` replaces the
|
|
41
|
+
* base an asset url resolves against, but only an absolute one is a base by itself —
|
|
42
|
+
* a relative one is read against the base this target would use without it, so it
|
|
43
|
+
* lands beside the chunk rather than throwing wherever the runtime reads it.
|
|
44
|
+
* @param {string | undefined} baseUri the entry's base uri, if it set one
|
|
45
|
+
* @param {string} fallback expression for the base this target uses without one
|
|
46
|
+
* @returns {string} the assignment, ending with `;`
|
|
47
|
+
*/
|
|
48
|
+
const renderBaseUri = (baseUri, fallback) => {
|
|
49
|
+
// An empty one names no base of its own, so it leaves the target's alone.
|
|
50
|
+
if (!baseUri) return `${RuntimeGlobals.baseURI} = ${fallback};`;
|
|
51
|
+
// A scheme already makes it a base of its own. Whether anything resolves against an
|
|
52
|
+
// opaque one is the user's to answer, as it was before.
|
|
53
|
+
if (SCHEME_REGEXP.test(baseUri)) {
|
|
54
|
+
return `${RuntimeGlobals.baseURI} = ${JSON.stringify(baseUri)};`;
|
|
55
|
+
}
|
|
56
|
+
return `${RuntimeGlobals.baseURI} = new URL(${JSON.stringify(
|
|
57
|
+
baseUri
|
|
58
|
+
)}, ${fallback}).href;`;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
module.exports.isAbsoluteBaseUri = isAbsoluteBaseUri;
|
|
62
|
+
module.exports.isChunkRelativeBaseUri = isChunkRelativeBaseUri;
|
|
63
|
+
module.exports.renderBaseUri = renderBaseUri;
|