@depup/webpack 5.106.1-depup.0 → 5.109.2-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 +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
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
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
10
|
+
const ModuleDependency = require("./ModuleDependency");
|
|
11
|
+
const URLDependency = require("./URLDependency");
|
|
12
|
+
|
|
13
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
14
|
+
/** @typedef {import("../Dependency")} Dependency */
|
|
15
|
+
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
16
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
17
|
+
|
|
18
|
+
// `import.meta.resolve(specifier)` is the string form of
|
|
19
|
+
// `new URL(specifier, import.meta.url)`, so it reuses the URL asset pipeline
|
|
20
|
+
// but renders to the resolved URL string (`.href`) over the whole call.
|
|
21
|
+
class ImportMetaResolveDependency extends URLDependency {
|
|
22
|
+
get type() {
|
|
23
|
+
return "import.meta.resolve()";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
ImportMetaResolveDependency.Template = class ImportMetaResolveDependencyTemplate extends (
|
|
28
|
+
ModuleDependency.Template
|
|
29
|
+
) {
|
|
30
|
+
/**
|
|
31
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
32
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
33
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
|
34
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
|
35
|
+
* @returns {void}
|
|
36
|
+
*/
|
|
37
|
+
apply(dependency, source, templateContext) {
|
|
38
|
+
const {
|
|
39
|
+
chunkGraph,
|
|
40
|
+
moduleGraph,
|
|
41
|
+
runtimeRequirements,
|
|
42
|
+
runtimeTemplate,
|
|
43
|
+
runtime
|
|
44
|
+
} = templateContext;
|
|
45
|
+
const dep = /** @type {ImportMetaResolveDependency} */ (dependency);
|
|
46
|
+
const connection = moduleGraph.getConnection(dep);
|
|
47
|
+
// Skip rendering the dependency when it is conditional and inactive.
|
|
48
|
+
if (connection && !connection.isTargetActive(runtime)) {
|
|
49
|
+
source.replace(
|
|
50
|
+
dep.outerRange[0],
|
|
51
|
+
dep.outerRange[1] - 1,
|
|
52
|
+
"/* unused asset import */ undefined"
|
|
53
|
+
);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
runtimeRequirements.add(RuntimeGlobals.require);
|
|
58
|
+
|
|
59
|
+
const moduleRaw = runtimeTemplate.moduleRaw({
|
|
60
|
+
chunkGraph,
|
|
61
|
+
module: moduleGraph.getModule(dep),
|
|
62
|
+
request: dep.request,
|
|
63
|
+
runtimeRequirements,
|
|
64
|
+
weak: false
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
if (dep.relative) {
|
|
68
|
+
runtimeRequirements.add(RuntimeGlobals.relativeUrl);
|
|
69
|
+
source.replace(
|
|
70
|
+
dep.outerRange[0],
|
|
71
|
+
dep.outerRange[1] - 1,
|
|
72
|
+
`(new ${RuntimeGlobals.relativeUrl}(/* asset import */ ${moduleRaw})).href`
|
|
73
|
+
);
|
|
74
|
+
} else {
|
|
75
|
+
runtimeRequirements.add(RuntimeGlobals.baseURI);
|
|
76
|
+
source.replace(
|
|
77
|
+
dep.outerRange[0],
|
|
78
|
+
dep.outerRange[1] - 1,
|
|
79
|
+
`(new URL(/* asset import */ ${moduleRaw}, ${RuntimeGlobals.baseURI})).href`
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
makeSerializable(
|
|
86
|
+
ImportMetaResolveDependency,
|
|
87
|
+
"webpack/lib/dependencies/ImportMetaResolveDependency"
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
module.exports = ImportMetaResolveDependency;
|
|
@@ -6,12 +6,13 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
|
9
|
-
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
|
10
|
-
const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
|
|
9
|
+
const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
|
|
10
|
+
const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
|
|
11
11
|
const {
|
|
12
12
|
VariableInfo,
|
|
13
13
|
getImportAttributes
|
|
14
14
|
} = require("../javascript/JavascriptParser");
|
|
15
|
+
const memoize = require("../util/memoize");
|
|
15
16
|
const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
|
|
16
17
|
const ContextDependencyHelpers = require("./ContextDependencyHelpers");
|
|
17
18
|
const { getNonOptionalPart } = require("./HarmonyImportDependency");
|
|
@@ -42,11 +43,14 @@ const ImportWeakDependency = require("./ImportWeakDependency");
|
|
|
42
43
|
/** @typedef {{ references: RawReferencedExports, expression: ImportExpression }} ImportSettings */
|
|
43
44
|
/** @typedef {WeakMap<ImportExpression, RawReferencedExports>} State */
|
|
44
45
|
|
|
46
|
+
const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
|
|
47
|
+
|
|
45
48
|
/** @type {WeakMap<JavascriptParserState, State>} */
|
|
46
49
|
const parserStateMap = new WeakMap();
|
|
47
50
|
const dynamicImportTag = Symbol("import()");
|
|
48
51
|
|
|
49
52
|
/**
|
|
53
|
+
* Returns import parser plugin state.
|
|
50
54
|
* @param {JavascriptParser} parser javascript parser
|
|
51
55
|
* @returns {State} import parser plugin state
|
|
52
56
|
*/
|
|
@@ -58,6 +62,7 @@ function getState(parser) {
|
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
/**
|
|
65
|
+
* Tag dynamic import referenced.
|
|
61
66
|
* @param {JavascriptParser} parser javascript parser
|
|
62
67
|
* @param {ImportExpression} importCall import expression
|
|
63
68
|
* @param {string} variableName variable name
|
|
@@ -78,6 +83,7 @@ function tagDynamicImportReferenced(parser, importCall, variableName) {
|
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
/**
|
|
86
|
+
* Gets fulfilled callback namespace obj.
|
|
81
87
|
* @param {CallExpression} importThen import().then() call
|
|
82
88
|
* @returns {Identifier | ObjectPattern | undefined} the dynamic imported namespace obj
|
|
83
89
|
*/
|
|
@@ -96,6 +102,7 @@ function getFulfilledCallbackNamespaceObj(importThen) {
|
|
|
96
102
|
}
|
|
97
103
|
|
|
98
104
|
/**
|
|
105
|
+
* Walk import then fulfilled callback.
|
|
99
106
|
* @param {JavascriptParser} parser javascript parser
|
|
100
107
|
* @param {ImportExpression} importCall import expression
|
|
101
108
|
* @param {ArrowFunctionExpression | FunctionExpression} fulfilledCallback the fulfilled callback
|
|
@@ -157,6 +164,7 @@ function walkImportThenFulfilledCallback(
|
|
|
157
164
|
}
|
|
158
165
|
|
|
159
166
|
/**
|
|
167
|
+
* Exports from enumerable.
|
|
160
168
|
* @template T
|
|
161
169
|
* @param {Iterable<T>} enumerable enumerable
|
|
162
170
|
* @returns {T[][]} array of array
|
|
@@ -166,15 +174,59 @@ const exportsFromEnumerable = (enumerable) =>
|
|
|
166
174
|
|
|
167
175
|
const PLUGIN_NAME = "ImportParserPlugin";
|
|
168
176
|
|
|
177
|
+
/**
|
|
178
|
+
* Whether an `import()` second argument is a fully static attributes object
|
|
179
|
+
* (every `with`/`assert` value is a string literal). Only then can webpack use
|
|
180
|
+
* the attributes at build time; otherwise the argument must be evaluated and
|
|
181
|
+
* validated at runtime per spec.
|
|
182
|
+
* @param {import("estree").Expression | null | undefined} node the second-argument AST node
|
|
183
|
+
* @returns {boolean} true if statically extractable
|
|
184
|
+
*/
|
|
185
|
+
const isStaticStringAttributes = (node) => {
|
|
186
|
+
if (!node || node.type !== "ObjectExpression") return false;
|
|
187
|
+
for (const prop of node.properties) {
|
|
188
|
+
if (prop.type !== "Property" || prop.kind !== "init" || prop.computed) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
const key = prop.key;
|
|
192
|
+
const keyName =
|
|
193
|
+
key.type === "Identifier"
|
|
194
|
+
? key.name
|
|
195
|
+
: key.type === "Literal"
|
|
196
|
+
? key.value
|
|
197
|
+
: undefined;
|
|
198
|
+
if (keyName === "with" || keyName === "assert") {
|
|
199
|
+
const value = prop.value;
|
|
200
|
+
if (value.type !== "ObjectExpression") return false;
|
|
201
|
+
for (const attr of value.properties) {
|
|
202
|
+
if (attr.type !== "Property" || attr.kind !== "init" || attr.computed) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
const attrValue = attr.value;
|
|
206
|
+
if (
|
|
207
|
+
attrValue.type !== "Literal" ||
|
|
208
|
+
typeof attrValue.value !== "string"
|
|
209
|
+
) {
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return true;
|
|
216
|
+
};
|
|
217
|
+
|
|
169
218
|
class ImportParserPlugin {
|
|
170
219
|
/**
|
|
220
|
+
* Creates an instance of ImportParserPlugin.
|
|
171
221
|
* @param {JavascriptParserOptions} options options
|
|
172
222
|
*/
|
|
173
223
|
constructor(options) {
|
|
224
|
+
/** @type {JavascriptParserOptions} */
|
|
174
225
|
this.options = options;
|
|
175
226
|
}
|
|
176
227
|
|
|
177
228
|
/**
|
|
229
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
178
230
|
* @param {JavascriptParser} parser the parser
|
|
179
231
|
* @returns {void}
|
|
180
232
|
*/
|
|
@@ -266,6 +318,7 @@ class ImportParserPlugin {
|
|
|
266
318
|
|
|
267
319
|
const {
|
|
268
320
|
dynamicImportPreload,
|
|
321
|
+
dynamicImportCssPreload,
|
|
269
322
|
dynamicImportPrefetch,
|
|
270
323
|
dynamicImportFetchPriority
|
|
271
324
|
} = this.options;
|
|
@@ -276,6 +329,13 @@ class ImportParserPlugin {
|
|
|
276
329
|
groupOptions.preloadOrder =
|
|
277
330
|
dynamicImportPreload === true ? 0 : dynamicImportPreload;
|
|
278
331
|
}
|
|
332
|
+
if (
|
|
333
|
+
dynamicImportCssPreload !== undefined &&
|
|
334
|
+
dynamicImportCssPreload !== false
|
|
335
|
+
) {
|
|
336
|
+
groupOptions.cssPreloadOrder =
|
|
337
|
+
dynamicImportCssPreload === true ? 0 : dynamicImportCssPreload;
|
|
338
|
+
}
|
|
279
339
|
if (
|
|
280
340
|
dynamicImportPrefetch !== undefined &&
|
|
281
341
|
dynamicImportPrefetch !== false
|
|
@@ -299,7 +359,7 @@ class ImportParserPlugin {
|
|
|
299
359
|
parser.state.module.addWarning(
|
|
300
360
|
new CommentCompilationWarning(
|
|
301
361
|
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
302
|
-
|
|
362
|
+
parser.getLocation(comment)
|
|
303
363
|
)
|
|
304
364
|
);
|
|
305
365
|
}
|
|
@@ -316,7 +376,7 @@ class ImportParserPlugin {
|
|
|
316
376
|
parser.state.module.addWarning(
|
|
317
377
|
new UnsupportedFeatureWarning(
|
|
318
378
|
`\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
|
|
319
|
-
|
|
379
|
+
parser.getLocation(expr)
|
|
320
380
|
)
|
|
321
381
|
);
|
|
322
382
|
} else if (importOptions.webpackIgnore) {
|
|
@@ -329,7 +389,7 @@ class ImportParserPlugin {
|
|
|
329
389
|
parser.state.module.addWarning(
|
|
330
390
|
new UnsupportedFeatureWarning(
|
|
331
391
|
`\`webpackChunkName\` expected a string, but received: ${importOptions.webpackChunkName}.`,
|
|
332
|
-
|
|
392
|
+
parser.getLocation(expr)
|
|
333
393
|
)
|
|
334
394
|
);
|
|
335
395
|
} else {
|
|
@@ -341,7 +401,7 @@ class ImportParserPlugin {
|
|
|
341
401
|
parser.state.module.addWarning(
|
|
342
402
|
new UnsupportedFeatureWarning(
|
|
343
403
|
`\`webpackMode\` expected a string, but received: ${importOptions.webpackMode}.`,
|
|
344
|
-
|
|
404
|
+
parser.getLocation(expr)
|
|
345
405
|
)
|
|
346
406
|
);
|
|
347
407
|
} else {
|
|
@@ -357,7 +417,7 @@ class ImportParserPlugin {
|
|
|
357
417
|
parser.state.module.addWarning(
|
|
358
418
|
new UnsupportedFeatureWarning(
|
|
359
419
|
`\`webpackPrefetch\` expected true or a number, but received: ${importOptions.webpackPrefetch}.`,
|
|
360
|
-
|
|
420
|
+
parser.getLocation(expr)
|
|
361
421
|
)
|
|
362
422
|
);
|
|
363
423
|
}
|
|
@@ -371,7 +431,7 @@ class ImportParserPlugin {
|
|
|
371
431
|
parser.state.module.addWarning(
|
|
372
432
|
new UnsupportedFeatureWarning(
|
|
373
433
|
`\`webpackPreload\` expected true or a number, but received: ${importOptions.webpackPreload}.`,
|
|
374
|
-
|
|
434
|
+
parser.getLocation(expr)
|
|
375
435
|
)
|
|
376
436
|
);
|
|
377
437
|
}
|
|
@@ -388,7 +448,7 @@ class ImportParserPlugin {
|
|
|
388
448
|
parser.state.module.addWarning(
|
|
389
449
|
new UnsupportedFeatureWarning(
|
|
390
450
|
`\`webpackFetchPriority\` expected true or "low", "high" or "auto", but received: ${importOptions.webpackFetchPriority}.`,
|
|
391
|
-
|
|
451
|
+
parser.getLocation(expr)
|
|
392
452
|
)
|
|
393
453
|
);
|
|
394
454
|
}
|
|
@@ -401,7 +461,7 @@ class ImportParserPlugin {
|
|
|
401
461
|
parser.state.module.addWarning(
|
|
402
462
|
new UnsupportedFeatureWarning(
|
|
403
463
|
`\`webpackInclude\` expected a regular expression, but received: ${importOptions.webpackInclude}.`,
|
|
404
|
-
|
|
464
|
+
parser.getLocation(expr)
|
|
405
465
|
)
|
|
406
466
|
);
|
|
407
467
|
} else {
|
|
@@ -416,7 +476,7 @@ class ImportParserPlugin {
|
|
|
416
476
|
parser.state.module.addWarning(
|
|
417
477
|
new UnsupportedFeatureWarning(
|
|
418
478
|
`\`webpackExclude\` expected a regular expression, but received: ${importOptions.webpackExclude}.`,
|
|
419
|
-
|
|
479
|
+
parser.getLocation(expr)
|
|
420
480
|
)
|
|
421
481
|
);
|
|
422
482
|
} else {
|
|
@@ -424,19 +484,17 @@ class ImportParserPlugin {
|
|
|
424
484
|
}
|
|
425
485
|
}
|
|
426
486
|
if (importOptions.webpackExports !== undefined) {
|
|
427
|
-
if (
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
)
|
|
435
|
-
) {
|
|
487
|
+
if (!(
|
|
488
|
+
typeof importOptions.webpackExports === "string" ||
|
|
489
|
+
(Array.isArray(importOptions.webpackExports) &&
|
|
490
|
+
importOptions.webpackExports.every(
|
|
491
|
+
(item) => typeof item === "string"
|
|
492
|
+
))
|
|
493
|
+
)) {
|
|
436
494
|
parser.state.module.addWarning(
|
|
437
495
|
new UnsupportedFeatureWarning(
|
|
438
496
|
`\`webpackExports\` expected a string or an array of strings, but received: ${importOptions.webpackExports}.`,
|
|
439
|
-
|
|
497
|
+
parser.getLocation(expr)
|
|
440
498
|
)
|
|
441
499
|
);
|
|
442
500
|
} else if (typeof importOptions.webpackExports === "string") {
|
|
@@ -445,6 +503,20 @@ class ImportParserPlugin {
|
|
|
445
503
|
exports = exportsFromEnumerable(importOptions.webpackExports);
|
|
446
504
|
}
|
|
447
505
|
}
|
|
506
|
+
// `worker` is an internal entry option set only for workers
|
|
507
|
+
if (
|
|
508
|
+
importOptions.webpackEntryOptions !== undefined &&
|
|
509
|
+
typeof importOptions.webpackEntryOptions === "object" &&
|
|
510
|
+
importOptions.webpackEntryOptions !== null &&
|
|
511
|
+
importOptions.webpackEntryOptions.worker !== undefined
|
|
512
|
+
) {
|
|
513
|
+
parser.state.module.addWarning(
|
|
514
|
+
new UnsupportedFeatureWarning(
|
|
515
|
+
"`worker` entry option is not supported in `import()`, it only applies to workers (e.g. `new Worker(new URL(...))`).",
|
|
516
|
+
parser.getLocation(expr)
|
|
517
|
+
)
|
|
518
|
+
);
|
|
519
|
+
}
|
|
448
520
|
}
|
|
449
521
|
|
|
450
522
|
if (
|
|
@@ -456,7 +528,7 @@ class ImportParserPlugin {
|
|
|
456
528
|
parser.state.module.addWarning(
|
|
457
529
|
new UnsupportedFeatureWarning(
|
|
458
530
|
`\`webpackMode\` expected 'lazy', 'lazy-once', 'eager' or 'weak', but received: ${mode}.`,
|
|
459
|
-
|
|
531
|
+
parser.getLocation(expr)
|
|
460
532
|
)
|
|
461
533
|
);
|
|
462
534
|
mode = "lazy";
|
|
@@ -477,7 +549,7 @@ class ImportParserPlugin {
|
|
|
477
549
|
parser.state.module.addWarning(
|
|
478
550
|
new UnsupportedFeatureWarning(
|
|
479
551
|
"You don't need `webpackExports` if the usage of dynamic import is statically analyse-able. You can safely remove the `webpackExports` magic comment.",
|
|
480
|
-
|
|
552
|
+
parser.getLocation(expr)
|
|
481
553
|
)
|
|
482
554
|
);
|
|
483
555
|
}
|
|
@@ -529,20 +601,35 @@ class ImportParserPlugin {
|
|
|
529
601
|
...groupOptions,
|
|
530
602
|
name: chunkName
|
|
531
603
|
},
|
|
532
|
-
|
|
604
|
+
parser.getLocation(expr),
|
|
533
605
|
param.string
|
|
534
606
|
);
|
|
607
|
+
// A second argument that isn't a statically extractable attributes
|
|
608
|
+
// object still has to be evaluated and validated at runtime, so
|
|
609
|
+
// drop the (unreliable) static attributes for it.
|
|
610
|
+
const optionsNode = expr.options;
|
|
611
|
+
const runtimeValidateOptions = Boolean(
|
|
612
|
+
optionsNode && !isStaticStringAttributes(optionsNode)
|
|
613
|
+
);
|
|
535
614
|
const dep = new ImportDependency(
|
|
536
615
|
/** @type {string} */ (param.string),
|
|
537
616
|
/** @type {Range} */ (expr.range),
|
|
538
617
|
exports,
|
|
539
618
|
phase,
|
|
540
|
-
attributes
|
|
619
|
+
runtimeValidateOptions ? undefined : attributes
|
|
541
620
|
);
|
|
542
|
-
|
|
621
|
+
if (runtimeValidateOptions && optionsNode && optionsNode.range) {
|
|
622
|
+
dep.optionsRange = /** @type {Range} */ (optionsNode.range);
|
|
623
|
+
// The options expression stays in the output, so walk it to
|
|
624
|
+
// register its variable references and keep them from being
|
|
625
|
+
// tree-shaken away.
|
|
626
|
+
parser.walkExpression(optionsNode);
|
|
627
|
+
}
|
|
628
|
+
dep.loc = parser.getLocation(expr);
|
|
543
629
|
dep.optional = Boolean(parser.scope.inTry);
|
|
544
630
|
depBlock.addDependency(dep);
|
|
545
631
|
parser.state.current.addBlock(depBlock);
|
|
632
|
+
getHarmonyImportGuard().attachDependencyGuards(parser, dep);
|
|
546
633
|
}
|
|
547
634
|
} else {
|
|
548
635
|
if (mode === "weak") {
|
|
@@ -575,7 +662,7 @@ class ImportParserPlugin {
|
|
|
575
662
|
parser
|
|
576
663
|
);
|
|
577
664
|
if (!dep) return;
|
|
578
|
-
dep.loc =
|
|
665
|
+
dep.loc = parser.getLocation(expr);
|
|
579
666
|
dep.optional = Boolean(parser.scope.inTry);
|
|
580
667
|
parser.state.current.addDependency(dep);
|
|
581
668
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const memoize = require("../util/memoize");
|
|
9
9
|
|
|
10
10
|
const getCommentCompilationWarning = memoize(() =>
|
|
11
|
-
require("../CommentCompilationWarning")
|
|
11
|
+
require("../errors/CommentCompilationWarning")
|
|
12
12
|
);
|
|
13
13
|
|
|
14
14
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
@@ -28,6 +28,7 @@ const ImportPhase = Object.freeze({
|
|
|
28
28
|
/** @typedef {"defer" | "source" | "evaluation"} ImportPhaseName */
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
+
* Defines the import phase utils type used by this module.
|
|
31
32
|
* @typedef {object} ImportPhaseUtils
|
|
32
33
|
* @property {(phase: ImportPhaseType | undefined) => boolean} isEvaluation true if phase is evaluation
|
|
33
34
|
* @property {(phase: ImportPhaseType | undefined) => boolean} isDefer true if phase is defer
|
|
@@ -59,10 +60,12 @@ const ImportPhaseUtils = {
|
|
|
59
60
|
};
|
|
60
61
|
|
|
61
62
|
/**
|
|
63
|
+
* Defines the get comment options type used by this module.
|
|
62
64
|
* @typedef {() => Record<string, EXPECTED_ANY> | null} GetCommentOptions
|
|
63
65
|
*/
|
|
64
66
|
|
|
65
67
|
/**
|
|
68
|
+
* Defines the get import phase callback.
|
|
66
69
|
* @callback GetImportPhase
|
|
67
70
|
* @param {JavascriptParser} parser parser
|
|
68
71
|
* @param {ExportNamedDeclaration | ExportAllDeclaration | ImportDeclaration | ImportExpression} node node
|
|
@@ -71,8 +74,9 @@ const ImportPhaseUtils = {
|
|
|
71
74
|
*/
|
|
72
75
|
|
|
73
76
|
/**
|
|
74
|
-
*
|
|
75
|
-
* @param {boolean=}
|
|
77
|
+
* Creates an import phase resolver.
|
|
78
|
+
* @param {boolean=} enableDeferPhase enable defer phase detection
|
|
79
|
+
* @param {boolean=} enableSourcePhase enable source phase detection
|
|
76
80
|
* @returns {GetImportPhase} evaluates the import phase for ast node
|
|
77
81
|
*/
|
|
78
82
|
function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
|
|
@@ -99,15 +103,13 @@ function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
|
|
|
99
103
|
if (!node.range) return null;
|
|
100
104
|
const { options, errors } = parser.parseCommentOptions(node.range);
|
|
101
105
|
if (errors) {
|
|
106
|
+
const CommentCompilationWarning = getCommentCompilationWarning();
|
|
102
107
|
for (const e of errors) {
|
|
103
108
|
const { comment } = e;
|
|
104
|
-
if (!comment.loc) continue;
|
|
105
|
-
|
|
106
|
-
const CommentCompilationWarning = getCommentCompilationWarning();
|
|
107
109
|
parser.state.module.addWarning(
|
|
108
110
|
new CommentCompilationWarning(
|
|
109
111
|
`Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
|
|
110
|
-
comment
|
|
112
|
+
parser.getLocation(comment)
|
|
111
113
|
)
|
|
112
114
|
);
|
|
113
115
|
}
|
|
@@ -130,13 +132,15 @@ function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
|
|
|
130
132
|
if (enableDeferPhase && typeof options.webpackDefer !== "undefined") {
|
|
131
133
|
if (typeof webpackDefer === "boolean") {
|
|
132
134
|
return webpackDefer ? ImportPhase.Defer : phaseBySyntax;
|
|
133
|
-
}
|
|
135
|
+
}
|
|
136
|
+
const loc = parser.getLocation(node);
|
|
137
|
+
if (loc) {
|
|
134
138
|
const CommentCompilationWarning = getCommentCompilationWarning();
|
|
135
139
|
|
|
136
140
|
parser.state.module.addWarning(
|
|
137
141
|
new CommentCompilationWarning(
|
|
138
142
|
"webpackDefer magic comment expected a boolean value.",
|
|
139
|
-
|
|
143
|
+
loc
|
|
140
144
|
)
|
|
141
145
|
);
|
|
142
146
|
}
|
|
@@ -145,13 +149,15 @@ function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
|
|
|
145
149
|
if (enableSourcePhase && typeof options.webpackSource !== "undefined") {
|
|
146
150
|
if (typeof webpackSource === "boolean") {
|
|
147
151
|
return webpackSource ? ImportPhase.Source : phaseBySyntax;
|
|
148
|
-
}
|
|
152
|
+
}
|
|
153
|
+
const loc = parser.getLocation(node);
|
|
154
|
+
if (loc) {
|
|
149
155
|
const CommentCompilationWarning = getCommentCompilationWarning();
|
|
150
156
|
|
|
151
157
|
parser.state.module.addWarning(
|
|
152
158
|
new CommentCompilationWarning(
|
|
153
159
|
"webpackSource magic comment expected a boolean value.",
|
|
154
|
-
|
|
160
|
+
loc
|
|
155
161
|
)
|
|
156
162
|
);
|
|
157
163
|
}
|
|
@@ -24,7 +24,7 @@ const PLUGIN_NAME = "ImportPlugin";
|
|
|
24
24
|
|
|
25
25
|
class ImportPlugin {
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
27
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
28
28
|
* @param {Compiler} compiler the compiler instance
|
|
29
29
|
* @returns {void}
|
|
30
30
|
*/
|
|
@@ -69,6 +69,7 @@ class ImportPlugin {
|
|
|
69
69
|
);
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
|
+
* Handles the hook callback for this code path.
|
|
72
73
|
* @param {Parser} parser parser parser
|
|
73
74
|
* @param {JavascriptParserOptions} parserOptions parserOptions
|
|
74
75
|
* @returns {void}
|
|
@@ -20,6 +20,7 @@ const ImportDependency = require("./ImportDependency");
|
|
|
20
20
|
|
|
21
21
|
class ImportWeakDependency extends ImportDependency {
|
|
22
22
|
/**
|
|
23
|
+
* Creates an instance of ImportWeakDependency.
|
|
23
24
|
* @param {string} request the request
|
|
24
25
|
* @param {Range} range expression range
|
|
25
26
|
* @param {RawReferencedExports | null} referencedExports list of referenced exports
|
|
@@ -28,6 +29,7 @@ class ImportWeakDependency extends ImportDependency {
|
|
|
28
29
|
*/
|
|
29
30
|
constructor(request, range, referencedExports, phase, attributes) {
|
|
30
31
|
super(request, range, referencedExports, phase, attributes);
|
|
32
|
+
/** @type {boolean} */
|
|
31
33
|
this.weak = true;
|
|
32
34
|
}
|
|
33
35
|
|
|
@@ -45,6 +47,7 @@ ImportWeakDependency.Template = class ImportDependencyTemplate extends (
|
|
|
45
47
|
ImportDependency.Template
|
|
46
48
|
) {
|
|
47
49
|
/**
|
|
50
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
48
51
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
49
52
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
50
53
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -14,11 +14,12 @@ const NullDependency = require("./NullDependency");
|
|
|
14
14
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
15
15
|
/** @typedef {import("../json/JsonData")} JsonData */
|
|
16
16
|
/** @typedef {import("../json/JsonData").JsonValue} JsonValue */
|
|
17
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
18
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[JsonData, number]>} ObjectDeserializerContext */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[JsonData, number]>} ObjectSerializerContext */
|
|
19
19
|
/** @typedef {import("../util/Hash")} Hash */
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
+
* Defines the get exports from data fn callback.
|
|
22
23
|
* @callback GetExportsFromDataFn
|
|
23
24
|
* @param {JsonValue} data raw json data
|
|
24
25
|
* @param {number=} curDepth current depth
|
|
@@ -26,6 +27,7 @@ const NullDependency = require("./NullDependency");
|
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
29
|
/**
|
|
30
|
+
* Gets exports with depth.
|
|
29
31
|
* @param {number} exportsDepth exportsDepth
|
|
30
32
|
* @returns {GetExportsFromDataFn} value
|
|
31
33
|
*/
|
|
@@ -71,12 +73,15 @@ const getExportsWithDepth = (exportsDepth) =>
|
|
|
71
73
|
|
|
72
74
|
class JsonExportsDependency extends NullDependency {
|
|
73
75
|
/**
|
|
76
|
+
* Creates an instance of JsonExportsDependency.
|
|
74
77
|
* @param {JsonData} data json data
|
|
75
78
|
* @param {number} exportsDepth the depth of json exports to analyze
|
|
76
79
|
*/
|
|
77
80
|
constructor(data, exportsDepth) {
|
|
78
81
|
super();
|
|
82
|
+
/** @type {JsonData} */
|
|
79
83
|
this.data = data;
|
|
84
|
+
/** @type {number} */
|
|
80
85
|
this.exportsDepth = exportsDepth;
|
|
81
86
|
}
|
|
82
87
|
|
|
@@ -99,7 +104,7 @@ class JsonExportsDependency extends NullDependency {
|
|
|
99
104
|
}
|
|
100
105
|
|
|
101
106
|
/**
|
|
102
|
-
*
|
|
107
|
+
* Updates the hash with the data contributed by this instance.
|
|
103
108
|
* @param {Hash} hash hash to be updated
|
|
104
109
|
* @param {UpdateHashContext} context context
|
|
105
110
|
* @returns {void}
|
|
@@ -109,23 +114,23 @@ class JsonExportsDependency extends NullDependency {
|
|
|
109
114
|
}
|
|
110
115
|
|
|
111
116
|
/**
|
|
117
|
+
* Serializes this instance into the provided serializer context.
|
|
112
118
|
* @param {ObjectSerializerContext} context context
|
|
113
119
|
*/
|
|
114
120
|
serialize(context) {
|
|
115
|
-
|
|
116
|
-
write(this.data);
|
|
117
|
-
write(this.exportsDepth);
|
|
121
|
+
context.write(this.data).write(this.exportsDepth);
|
|
118
122
|
super.serialize(context);
|
|
119
123
|
}
|
|
120
124
|
|
|
121
125
|
/**
|
|
126
|
+
* Restores this instance from the provided deserializer context.
|
|
122
127
|
* @param {ObjectDeserializerContext} context context
|
|
123
128
|
*/
|
|
124
129
|
deserialize(context) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
this.exportsDepth = read();
|
|
128
|
-
super.deserialize(
|
|
130
|
+
this.data = context.read();
|
|
131
|
+
const c1 = context.rest;
|
|
132
|
+
this.exportsDepth = c1.read();
|
|
133
|
+
super.deserialize(c1.rest);
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
|
|
@@ -12,6 +12,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
12
12
|
|
|
13
13
|
class LoaderDependency extends ModuleDependency {
|
|
14
14
|
/**
|
|
15
|
+
* Creates an instance of LoaderDependency.
|
|
15
16
|
* @param {string} request request string
|
|
16
17
|
*/
|
|
17
18
|
constructor(request) {
|
|
@@ -27,6 +28,7 @@ class LoaderDependency extends ModuleDependency {
|
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
/**
|
|
31
|
+
* Returns function to determine if the connection is active.
|
|
30
32
|
* @param {ModuleGraph} moduleGraph module graph
|
|
31
33
|
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
32
34
|
*/
|
|
@@ -12,10 +12,12 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
12
12
|
|
|
13
13
|
class LoaderImportDependency extends ModuleDependency {
|
|
14
14
|
/**
|
|
15
|
+
* Creates an instance of LoaderImportDependency.
|
|
15
16
|
* @param {string} request request string
|
|
16
17
|
*/
|
|
17
18
|
constructor(request) {
|
|
18
19
|
super(request);
|
|
20
|
+
/** @type {boolean} */
|
|
19
21
|
this.weak = true;
|
|
20
22
|
}
|
|
21
23
|
|
|
@@ -28,6 +30,7 @@ class LoaderImportDependency extends ModuleDependency {
|
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
/**
|
|
33
|
+
* Returns function to determine if the connection is active.
|
|
31
34
|
* @param {ModuleGraph} moduleGraph module graph
|
|
32
35
|
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
33
36
|
*/
|