@depup/webpack 5.106.0-depup.0 → 5.109.0-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/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 +141 -9
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +23 -26
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +54 -37
- package/lib/Compilation.js +635 -107
- package/lib/Compiler.js +93 -31
- 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 +498 -127
- 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 +399 -108
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +376 -78
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +575 -149
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +92 -6
- 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 +15 -0
- 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 -60
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +5 -2
- 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 +485 -181
- package/lib/NormalModuleFactory.js +148 -29
- 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 +104 -26
- 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 +29 -3
- 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 +43 -7
- 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 +591 -41
- 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/ModuleFederationPlugin.js +12 -26
- 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 +534 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +156 -77
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +356 -204
- package/lib/css/CssParser.js +3452 -1950
- package/lib/css/syntax.js +4058 -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 +138 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -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 +682 -368
- 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 +32 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
- 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 +59 -3
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +426 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
- 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 +71 -49
- 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 +34 -8
- package/lib/html/HtmlGenerator.js +1470 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1111 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9020 -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 +25 -2
- 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 +579 -183
- package/lib/javascript/JavascriptParser.js +1289 -462
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +4380 -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 +23 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
- 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 +3 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +585 -116
- 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 +159 -34
- package/lib/optimize/RealContentHashPlugin.js +125 -50
- 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 +54 -6
- 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 +663 -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 +552 -463
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +50 -3
- 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 +94 -12
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
- package/lib/stats/StatsFactory.js +39 -18
- 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 +97 -6
- 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 +1117 -79
- 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 +8608 -1159
- 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
|
@@ -6,12 +6,15 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
|
+
const Template = require("../Template");
|
|
9
10
|
const makeSerializable = require("../util/makeSerializable");
|
|
11
|
+
const memoize = require("../util/memoize");
|
|
10
12
|
const { ImportPhaseUtils } = require("./ImportPhase");
|
|
11
13
|
const ModuleDependency = require("./ModuleDependency");
|
|
12
14
|
|
|
13
15
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
14
16
|
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
|
17
|
+
/** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
|
|
15
18
|
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
16
19
|
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
17
20
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
@@ -23,10 +26,14 @@ const ModuleDependency = require("./ModuleDependency");
|
|
|
23
26
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
24
27
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
25
28
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
29
|
+
/** @typedef {import("./HarmonyImportGuard").DependencyGuard} DependencyGuard */
|
|
26
30
|
/** @typedef {import("./ImportPhase").ImportPhaseType} ImportPhaseType */
|
|
27
31
|
|
|
32
|
+
const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
|
|
33
|
+
|
|
28
34
|
class ImportDependency extends ModuleDependency {
|
|
29
35
|
/**
|
|
36
|
+
* Creates an instance of ImportDependency.
|
|
30
37
|
* @param {string} request the request
|
|
31
38
|
* @param {Range} range expression range
|
|
32
39
|
* @param {RawReferencedExports | null} referencedExports list of referenced exports
|
|
@@ -36,9 +43,19 @@ class ImportDependency extends ModuleDependency {
|
|
|
36
43
|
constructor(request, range, referencedExports, phase, attributes) {
|
|
37
44
|
super(request);
|
|
38
45
|
this.range = range;
|
|
46
|
+
/** @type {RawReferencedExports | null} */
|
|
39
47
|
this.referencedExports = referencedExports;
|
|
48
|
+
/** @type {ImportPhaseType} */
|
|
40
49
|
this.phase = phase;
|
|
50
|
+
/** @type {ImportAttributes | undefined} */
|
|
41
51
|
this.attributes = attributes;
|
|
52
|
+
/** @type {DependencyGuard[] | undefined} */
|
|
53
|
+
this.branchGuards = undefined;
|
|
54
|
+
// Range of the `import(specifier, options)` second argument, set only when
|
|
55
|
+
// it is not a statically extractable attributes object and must therefore
|
|
56
|
+
// be evaluated and validated at runtime.
|
|
57
|
+
/** @type {Range | undefined} */
|
|
58
|
+
this.optionsRange = undefined;
|
|
42
59
|
}
|
|
43
60
|
|
|
44
61
|
get type() {
|
|
@@ -50,6 +67,19 @@ class ImportDependency extends ModuleDependency {
|
|
|
50
67
|
}
|
|
51
68
|
|
|
52
69
|
/**
|
|
70
|
+
* Returns function to determine if the connection is active.
|
|
71
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
72
|
+
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
73
|
+
*/
|
|
74
|
+
getCondition(moduleGraph) {
|
|
75
|
+
const guards = this.branchGuards;
|
|
76
|
+
if (guards === undefined) return null;
|
|
77
|
+
return (connection, runtime) =>
|
|
78
|
+
!getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Returns an identifier to merge equal requests.
|
|
53
83
|
* @returns {string | null} an identifier to merge equal requests
|
|
54
84
|
*/
|
|
55
85
|
getResourceIdentifier() {
|
|
@@ -96,13 +126,15 @@ class ImportDependency extends ModuleDependency {
|
|
|
96
126
|
}
|
|
97
127
|
refs.push({
|
|
98
128
|
name: referencedExport,
|
|
99
|
-
canMangle: false
|
|
129
|
+
canMangle: false,
|
|
130
|
+
canInline: false
|
|
100
131
|
});
|
|
101
132
|
}
|
|
102
133
|
return refs;
|
|
103
134
|
}
|
|
104
135
|
|
|
105
136
|
/**
|
|
137
|
+
* Serializes this instance into the provided serializer context.
|
|
106
138
|
* @param {ObjectSerializerContext} context context
|
|
107
139
|
*/
|
|
108
140
|
serialize(context) {
|
|
@@ -110,10 +142,13 @@ class ImportDependency extends ModuleDependency {
|
|
|
110
142
|
context.write(this.referencedExports);
|
|
111
143
|
context.write(this.phase);
|
|
112
144
|
context.write(this.attributes);
|
|
145
|
+
context.write(this.branchGuards);
|
|
146
|
+
context.write(this.optionsRange);
|
|
113
147
|
super.serialize(context);
|
|
114
148
|
}
|
|
115
149
|
|
|
116
150
|
/**
|
|
151
|
+
* Restores this instance from the provided deserializer context.
|
|
117
152
|
* @param {ObjectDeserializerContext} context context
|
|
118
153
|
*/
|
|
119
154
|
deserialize(context) {
|
|
@@ -121,6 +156,8 @@ class ImportDependency extends ModuleDependency {
|
|
|
121
156
|
this.referencedExports = context.read();
|
|
122
157
|
this.phase = context.read();
|
|
123
158
|
this.attributes = context.read();
|
|
159
|
+
this.branchGuards = context.read();
|
|
160
|
+
this.optionsRange = context.read();
|
|
124
161
|
super.deserialize(context);
|
|
125
162
|
}
|
|
126
163
|
}
|
|
@@ -131,6 +168,7 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
|
|
131
168
|
ModuleDependency.Template
|
|
132
169
|
) {
|
|
133
170
|
/**
|
|
171
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
134
172
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
135
173
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
136
174
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -139,9 +177,26 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
|
|
139
177
|
apply(
|
|
140
178
|
dependency,
|
|
141
179
|
source,
|
|
142
|
-
{
|
|
180
|
+
{
|
|
181
|
+
runtimeTemplate,
|
|
182
|
+
module,
|
|
183
|
+
moduleGraph,
|
|
184
|
+
chunkGraph,
|
|
185
|
+
runtimeRequirements,
|
|
186
|
+
runtime
|
|
187
|
+
}
|
|
143
188
|
) {
|
|
144
189
|
const dep = /** @type {ImportDependency} */ (dependency);
|
|
190
|
+
const connection = moduleGraph.getConnection(dep);
|
|
191
|
+
// Dead branch: module is excluded and has no id; code is never executed.
|
|
192
|
+
if (connection && !connection.isTargetActive(runtime)) {
|
|
193
|
+
source.replace(
|
|
194
|
+
dep.range[0],
|
|
195
|
+
dep.range[1] - 1,
|
|
196
|
+
"Promise.resolve(/* dead branch */)"
|
|
197
|
+
);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
145
200
|
const block = /** @type {AsyncDependenciesBlock} */ (
|
|
146
201
|
moduleGraph.getParentBlock(dep)
|
|
147
202
|
);
|
|
@@ -153,7 +208,8 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
|
|
153
208
|
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
|
154
209
|
dependency: dep,
|
|
155
210
|
message: "import()",
|
|
156
|
-
runtimeRequirements
|
|
211
|
+
runtimeRequirements,
|
|
212
|
+
originModule: module
|
|
157
213
|
});
|
|
158
214
|
|
|
159
215
|
// For source phase imports, unwrap the default export
|
|
@@ -165,6 +221,39 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
|
|
165
221
|
)})`;
|
|
166
222
|
}
|
|
167
223
|
|
|
224
|
+
// A non-static second argument must still be evaluated (for its side
|
|
225
|
+
// effects and evaluation order) and validated per spec. Keep it in place
|
|
226
|
+
// and wrap it in an inline validator that mirrors the runtime checks of
|
|
227
|
+
// the spec's `import(specifier, options)` evaluation.
|
|
228
|
+
if (dep.optionsRange) {
|
|
229
|
+
const validator = runtimeTemplate.basicFunction("o", [
|
|
230
|
+
"try {",
|
|
231
|
+
Template.indent([
|
|
232
|
+
"if (o !== undefined) {",
|
|
233
|
+
Template.indent([
|
|
234
|
+
'if ((typeof o !== "object" && typeof o !== "function") || o === null) throw new TypeError("The second argument to import() must be an object");',
|
|
235
|
+
'var a = o["with"];',
|
|
236
|
+
"if (a !== undefined) {",
|
|
237
|
+
Template.indent([
|
|
238
|
+
'if ((typeof a !== "object" && typeof a !== "function") || a === null) throw new TypeError("The \'with\' option must be an object");',
|
|
239
|
+
"for (var k = Object.keys(a), i = 0; i < k.length; i++) {",
|
|
240
|
+
Template.indent([
|
|
241
|
+
'if (typeof a[k[i]] !== "string") throw new TypeError("Import attribute values must be strings");'
|
|
242
|
+
]),
|
|
243
|
+
"}"
|
|
244
|
+
]),
|
|
245
|
+
"}"
|
|
246
|
+
]),
|
|
247
|
+
"}"
|
|
248
|
+
]),
|
|
249
|
+
"} catch (e) { return Promise.reject(e); }",
|
|
250
|
+
`return ${content};`
|
|
251
|
+
]);
|
|
252
|
+
source.replace(dep.range[0], dep.optionsRange[0] - 1, `(${validator})(`);
|
|
253
|
+
source.replace(dep.optionsRange[1], dep.range[1] - 1, ")");
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
168
257
|
source.replace(dep.range[0], dep.range[1] - 1, content);
|
|
169
258
|
}
|
|
170
259
|
};
|
|
@@ -20,6 +20,7 @@ const ImportDependency = require("./ImportDependency");
|
|
|
20
20
|
|
|
21
21
|
class ImportEagerDependency extends ImportDependency {
|
|
22
22
|
/**
|
|
23
|
+
* Creates an instance of ImportEagerDependency.
|
|
23
24
|
* @param {string} request the request
|
|
24
25
|
* @param {Range} range expression range
|
|
25
26
|
* @param {RawReferencedExports | null} referencedExports list of referenced exports
|
|
@@ -48,6 +49,7 @@ ImportEagerDependency.Template = class ImportEagerDependencyTemplate extends (
|
|
|
48
49
|
ImportDependency.Template
|
|
49
50
|
) {
|
|
50
51
|
/**
|
|
52
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
51
53
|
* @param {Dependency} dependency the dependency for which the template should be applied
|
|
52
54
|
* @param {ReplaceSource} source the current replace source which can be modified
|
|
53
55
|
* @param {DependencyTemplateContext} templateContext the context object
|
|
@@ -14,6 +14,7 @@ const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateA
|
|
|
14
14
|
|
|
15
15
|
class ImportMetaContextDependency extends ContextDependency {
|
|
16
16
|
/**
|
|
17
|
+
* Creates an instance of ImportMetaContextDependency.
|
|
17
18
|
* @param {ContextDependencyOptions} options options
|
|
18
19
|
* @param {Range} range range
|
|
19
20
|
*/
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const WebpackError = require("../WebpackError");
|
|
8
|
+
const WebpackError = require("../errors/WebpackError");
|
|
9
9
|
const {
|
|
10
10
|
evaluateToIdentifier
|
|
11
11
|
} = require("../javascript/JavascriptParserHelpers");
|
|
@@ -28,22 +28,24 @@ const ImportMetaContextDependency = require("./ImportMetaContextDependency");
|
|
|
28
28
|
/** @typedef {Pick<ContextModuleOptions, "mode" | "recursive" | "regExp" | "include" | "exclude" | "chunkName"> & { groupOptions: RawChunkGroupOptions, exports?: RawReferencedExports }} ImportMetaContextOptions */
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
|
+
* Creates a property parse error.
|
|
32
|
+
* @param {JavascriptParser} parser the parser
|
|
31
33
|
* @param {Property} prop property
|
|
32
34
|
* @param {string} expect except message
|
|
33
35
|
* @returns {WebpackError} error
|
|
34
36
|
*/
|
|
35
|
-
function createPropertyParseError(prop, expect) {
|
|
37
|
+
function createPropertyParseError(parser, prop, expect) {
|
|
36
38
|
return createError(
|
|
37
39
|
`Parsing import.meta.webpackContext options failed. Unknown value for property ${JSON.stringify(
|
|
38
40
|
/** @type {Identifier} */
|
|
39
41
|
(prop.key).name
|
|
40
42
|
)}, expected type ${expect}.`,
|
|
41
|
-
|
|
42
|
-
(prop.value.loc)
|
|
43
|
+
parser.getLocation(prop.value)
|
|
43
44
|
);
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
/**
|
|
48
|
+
* Creates an error from the provided msg.
|
|
47
49
|
* @param {string} msg message
|
|
48
50
|
* @param {DependencyLocation} loc location
|
|
49
51
|
* @returns {WebpackError} error
|
|
@@ -59,6 +61,7 @@ const PLUGIN_NAME = "ImportMetaContextDependencyParserPlugin";
|
|
|
59
61
|
|
|
60
62
|
module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
61
63
|
/**
|
|
64
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
62
65
|
* @param {JavascriptParser} parser the parser
|
|
63
66
|
* @returns {void}
|
|
64
67
|
*/
|
|
@@ -107,8 +110,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
107
110
|
errors.push(
|
|
108
111
|
createError(
|
|
109
112
|
"Parsing import.meta.webpackContext options failed.",
|
|
110
|
-
|
|
111
|
-
(optionsNode.loc)
|
|
113
|
+
parser.getLocation(optionsNode)
|
|
112
114
|
)
|
|
113
115
|
);
|
|
114
116
|
break;
|
|
@@ -119,7 +121,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
119
121
|
/** @type {Expression} */ (prop.value)
|
|
120
122
|
);
|
|
121
123
|
if (!regExpExpr.isRegExp()) {
|
|
122
|
-
errors.push(createPropertyParseError(prop, "RegExp"));
|
|
124
|
+
errors.push(createPropertyParseError(parser, prop, "RegExp"));
|
|
123
125
|
} else {
|
|
124
126
|
regExp = /** @type {RegExp} */ (regExpExpr.regExp);
|
|
125
127
|
}
|
|
@@ -130,7 +132,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
130
132
|
/** @type {Expression} */ (prop.value)
|
|
131
133
|
);
|
|
132
134
|
if (!regExpExpr.isRegExp()) {
|
|
133
|
-
errors.push(createPropertyParseError(prop, "RegExp"));
|
|
135
|
+
errors.push(createPropertyParseError(parser, prop, "RegExp"));
|
|
134
136
|
} else {
|
|
135
137
|
include = regExpExpr.regExp;
|
|
136
138
|
}
|
|
@@ -141,7 +143,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
141
143
|
/** @type {Expression} */ (prop.value)
|
|
142
144
|
);
|
|
143
145
|
if (!regExpExpr.isRegExp()) {
|
|
144
|
-
errors.push(createPropertyParseError(prop, "RegExp"));
|
|
146
|
+
errors.push(createPropertyParseError(parser, prop, "RegExp"));
|
|
145
147
|
} else {
|
|
146
148
|
exclude = regExpExpr.regExp;
|
|
147
149
|
}
|
|
@@ -152,7 +154,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
152
154
|
/** @type {Expression} */ (prop.value)
|
|
153
155
|
);
|
|
154
156
|
if (!modeExpr.isString()) {
|
|
155
|
-
errors.push(createPropertyParseError(prop, "string"));
|
|
157
|
+
errors.push(createPropertyParseError(parser, prop, "string"));
|
|
156
158
|
} else {
|
|
157
159
|
mode = /** @type {ContextModuleOptions["mode"]} */ (
|
|
158
160
|
modeExpr.string
|
|
@@ -165,7 +167,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
165
167
|
/** @type {Expression} */ (prop.value)
|
|
166
168
|
);
|
|
167
169
|
if (!expr.isString()) {
|
|
168
|
-
errors.push(createPropertyParseError(prop, "string"));
|
|
170
|
+
errors.push(createPropertyParseError(parser, prop, "string"));
|
|
169
171
|
} else {
|
|
170
172
|
chunkName = expr.string;
|
|
171
173
|
}
|
|
@@ -203,12 +205,16 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
203
205
|
}
|
|
204
206
|
} else {
|
|
205
207
|
errors.push(
|
|
206
|
-
createPropertyParseError(
|
|
208
|
+
createPropertyParseError(
|
|
209
|
+
parser,
|
|
210
|
+
prop,
|
|
211
|
+
"string|string[][]"
|
|
212
|
+
)
|
|
207
213
|
);
|
|
208
214
|
}
|
|
209
215
|
} else {
|
|
210
216
|
errors.push(
|
|
211
|
-
createPropertyParseError(prop, "string|string[][]")
|
|
217
|
+
createPropertyParseError(parser, prop, "string|string[][]")
|
|
212
218
|
);
|
|
213
219
|
}
|
|
214
220
|
break;
|
|
@@ -222,7 +228,9 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
222
228
|
} else if (expr.isNumber()) {
|
|
223
229
|
groupOptions.prefetchOrder = expr.number;
|
|
224
230
|
} else {
|
|
225
|
-
errors.push(
|
|
231
|
+
errors.push(
|
|
232
|
+
createPropertyParseError(parser, prop, "boolean|number")
|
|
233
|
+
);
|
|
226
234
|
}
|
|
227
235
|
break;
|
|
228
236
|
}
|
|
@@ -235,7 +243,9 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
235
243
|
} else if (expr.isNumber()) {
|
|
236
244
|
groupOptions.preloadOrder = expr.number;
|
|
237
245
|
} else {
|
|
238
|
-
errors.push(
|
|
246
|
+
errors.push(
|
|
247
|
+
createPropertyParseError(parser, prop, "boolean|number")
|
|
248
|
+
);
|
|
239
249
|
}
|
|
240
250
|
break;
|
|
241
251
|
}
|
|
@@ -255,7 +265,11 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
255
265
|
);
|
|
256
266
|
} else {
|
|
257
267
|
errors.push(
|
|
258
|
-
createPropertyParseError(
|
|
268
|
+
createPropertyParseError(
|
|
269
|
+
parser,
|
|
270
|
+
prop,
|
|
271
|
+
'"high"|"low"|"auto"'
|
|
272
|
+
)
|
|
259
273
|
);
|
|
260
274
|
}
|
|
261
275
|
break;
|
|
@@ -265,7 +279,9 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
265
279
|
/** @type {Expression} */ (prop.value)
|
|
266
280
|
);
|
|
267
281
|
if (!recursiveExpr.isBoolean()) {
|
|
268
|
-
errors.push(
|
|
282
|
+
errors.push(
|
|
283
|
+
createPropertyParseError(parser, prop, "boolean")
|
|
284
|
+
);
|
|
269
285
|
} else {
|
|
270
286
|
recursive = /** @type {boolean} */ (recursiveExpr.bool);
|
|
271
287
|
}
|
|
@@ -277,7 +293,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
277
293
|
`Parsing import.meta.webpackContext options failed. Unknown property ${JSON.stringify(
|
|
278
294
|
prop.key.name
|
|
279
295
|
)}.`,
|
|
280
|
-
|
|
296
|
+
parser.getLocation(optionsNode)
|
|
281
297
|
)
|
|
282
298
|
);
|
|
283
299
|
}
|
|
@@ -303,7 +319,7 @@ module.exports = class ImportMetaContextDependencyParserPlugin {
|
|
|
303
319
|
},
|
|
304
320
|
/** @type {Range} */ (expr.range)
|
|
305
321
|
);
|
|
306
|
-
dep.loc =
|
|
322
|
+
dep.loc = parser.getLocation(expr);
|
|
307
323
|
dep.optional = Boolean(parser.scope.inTry);
|
|
308
324
|
parser.state.current.addDependency(dep);
|
|
309
325
|
return true;
|
|
@@ -12,6 +12,9 @@ const {
|
|
|
12
12
|
const ContextElementDependency = require("./ContextElementDependency");
|
|
13
13
|
const ImportMetaContextDependency = require("./ImportMetaContextDependency");
|
|
14
14
|
const ImportMetaContextDependencyParserPlugin = require("./ImportMetaContextDependencyParserPlugin");
|
|
15
|
+
const ImportMetaGlobDependency = require("./ImportMetaGlobDependency");
|
|
16
|
+
const ImportMetaGlobDependencyParserPlugin = require("./ImportMetaGlobDependencyParserPlugin");
|
|
17
|
+
const { isImportMetaFieldEnabled } = require("./ImportMetaPlugin");
|
|
15
18
|
|
|
16
19
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
|
17
20
|
/** @typedef {import("../Compiler")} Compiler */
|
|
@@ -19,9 +22,31 @@ const ImportMetaContextDependencyParserPlugin = require("./ImportMetaContextDepe
|
|
|
19
22
|
|
|
20
23
|
const PLUGIN_NAME = "ImportMetaContextPlugin";
|
|
21
24
|
|
|
25
|
+
/** @type {(parserOptions: JavascriptParserOptions) => boolean} */
|
|
26
|
+
const isImportMetaContextEnabled = (parserOptions) => {
|
|
27
|
+
const importMeta = parserOptions.importMeta;
|
|
28
|
+
if (
|
|
29
|
+
Boolean(importMeta) &&
|
|
30
|
+
typeof importMeta === "object" &&
|
|
31
|
+
Object.prototype.hasOwnProperty.call(importMeta, "webpackContext")
|
|
32
|
+
) {
|
|
33
|
+
return isImportMetaFieldEnabled(importMeta, "webpackContext");
|
|
34
|
+
}
|
|
35
|
+
if (parserOptions.importMetaContext === false) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return isImportMetaFieldEnabled(importMeta, "webpackContext");
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// Gated only by the `importMeta.glob` field — independent of the legacy
|
|
42
|
+
// `importMetaContext` toggle, which controls `import.meta.webpackContext`.
|
|
43
|
+
/** @type {(parserOptions: JavascriptParserOptions) => boolean} */
|
|
44
|
+
const isImportMetaGlobEnabled = (parserOptions) =>
|
|
45
|
+
isImportMetaFieldEnabled(parserOptions.importMeta, "glob");
|
|
46
|
+
|
|
22
47
|
class ImportMetaContextPlugin {
|
|
23
48
|
/**
|
|
24
|
-
*
|
|
49
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
25
50
|
* @param {Compiler} compiler the compiler instance
|
|
26
51
|
* @returns {void}
|
|
27
52
|
*/
|
|
@@ -37,25 +62,32 @@ class ImportMetaContextPlugin {
|
|
|
37
62
|
ImportMetaContextDependency,
|
|
38
63
|
new ImportMetaContextDependency.Template()
|
|
39
64
|
);
|
|
65
|
+
compilation.dependencyFactories.set(
|
|
66
|
+
ImportMetaGlobDependency,
|
|
67
|
+
contextModuleFactory
|
|
68
|
+
);
|
|
69
|
+
compilation.dependencyTemplates.set(
|
|
70
|
+
ImportMetaGlobDependency,
|
|
71
|
+
new ImportMetaGlobDependency.Template()
|
|
72
|
+
);
|
|
40
73
|
compilation.dependencyFactories.set(
|
|
41
74
|
ContextElementDependency,
|
|
42
75
|
normalModuleFactory
|
|
43
76
|
);
|
|
44
77
|
|
|
45
78
|
/**
|
|
79
|
+
* Handles the hook callback for this code path.
|
|
46
80
|
* @param {Parser} parser parser parser
|
|
47
81
|
* @param {JavascriptParserOptions} parserOptions parserOptions
|
|
48
82
|
* @returns {void}
|
|
49
83
|
*/
|
|
50
84
|
const handler = (parser, parserOptions) => {
|
|
51
|
-
if (
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
) {
|
|
55
|
-
|
|
85
|
+
if (isImportMetaContextEnabled(parserOptions)) {
|
|
86
|
+
new ImportMetaContextDependencyParserPlugin().apply(parser);
|
|
87
|
+
}
|
|
88
|
+
if (isImportMetaGlobEnabled(parserOptions)) {
|
|
89
|
+
new ImportMetaGlobDependencyParserPlugin().apply(parser);
|
|
56
90
|
}
|
|
57
|
-
|
|
58
|
-
new ImportMetaContextDependencyParserPlugin().apply(parser);
|
|
59
91
|
};
|
|
60
92
|
|
|
61
93
|
normalModuleFactory.hooks.parser
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Natsu @xiaoxiaojx
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
9
|
+
const ContextDependency = require("./ContextDependency");
|
|
10
|
+
const ModuleDependencyTemplateAsRequireId = require("./ModuleDependencyTemplateAsRequireId");
|
|
11
|
+
|
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
13
|
+
/** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @typedef {ContextDependencyOptions & {
|
|
17
|
+
* patterns: string[],
|
|
18
|
+
* requestContext: string,
|
|
19
|
+
* importName?: string,
|
|
20
|
+
* exhaustive?: boolean,
|
|
21
|
+
* caseSensitive?: boolean,
|
|
22
|
+
* }} ImportMetaGlobDependencyOptions
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
class ImportMetaGlobDependency extends ContextDependency {
|
|
26
|
+
/**
|
|
27
|
+
* @param {ImportMetaGlobDependencyOptions} options options
|
|
28
|
+
* @param {Range} range range
|
|
29
|
+
*/
|
|
30
|
+
constructor(options, range) {
|
|
31
|
+
super(options, options ? options.requestContext : undefined);
|
|
32
|
+
|
|
33
|
+
this.range = range;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
get category() {
|
|
37
|
+
return "esm";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get type() {
|
|
41
|
+
return `import.meta.glob ${this.options.mode}`;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Returns an identifier to merge equal requests.
|
|
46
|
+
* @returns {string | null} an identifier to merge equal requests
|
|
47
|
+
*/
|
|
48
|
+
getResourceIdentifier() {
|
|
49
|
+
const {
|
|
50
|
+
patterns,
|
|
51
|
+
request,
|
|
52
|
+
recursive,
|
|
53
|
+
mode,
|
|
54
|
+
exhaustive,
|
|
55
|
+
caseSensitive,
|
|
56
|
+
importName,
|
|
57
|
+
referencedExports
|
|
58
|
+
} = /** @type {ImportMetaGlobDependencyOptions} */ (this.options);
|
|
59
|
+
return (
|
|
60
|
+
`context${this.getContext() || ""}|glob request${request} ` +
|
|
61
|
+
`${recursive} ${patterns.join(",")} ` +
|
|
62
|
+
`${mode}${exhaustive ? " exhaustive" : ""}` +
|
|
63
|
+
`${caseSensitive === false ? " case-insensitive" : ""}` +
|
|
64
|
+
`${importName ? ` import:${importName}` : ""}` +
|
|
65
|
+
`${
|
|
66
|
+
referencedExports
|
|
67
|
+
? ` referencedExports:${JSON.stringify(referencedExports)}`
|
|
68
|
+
: ""
|
|
69
|
+
}`
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
makeSerializable(
|
|
75
|
+
ImportMetaGlobDependency,
|
|
76
|
+
"webpack/lib/dependencies/ImportMetaGlobDependency"
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
ImportMetaGlobDependency.Template = ModuleDependencyTemplateAsRequireId;
|
|
80
|
+
|
|
81
|
+
module.exports = ImportMetaGlobDependency;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Natsu @xiaoxiaojx
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const {
|
|
9
|
+
evaluateToIdentifier
|
|
10
|
+
} = require("../javascript/JavascriptParserHelpers");
|
|
11
|
+
const ImportMetaGlobDependency = require("./ImportMetaGlobDependency");
|
|
12
|
+
const { parseImportMetaGlobCall } = require("./ImportMetaGlobHelpers");
|
|
13
|
+
|
|
14
|
+
/** @typedef {import("estree").CallExpression} CallExpression */
|
|
15
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
16
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
|
17
|
+
|
|
18
|
+
const PLUGIN_NAME = "ImportMetaGlobDependencyParserPlugin";
|
|
19
|
+
|
|
20
|
+
module.exports = class ImportMetaGlobDependencyParserPlugin {
|
|
21
|
+
/**
|
|
22
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
23
|
+
* @param {JavascriptParser} parser the parser
|
|
24
|
+
* @returns {void}
|
|
25
|
+
*/
|
|
26
|
+
apply(parser) {
|
|
27
|
+
parser.hooks.evaluateIdentifier
|
|
28
|
+
.for("import.meta.glob")
|
|
29
|
+
.tap(PLUGIN_NAME, (expr) =>
|
|
30
|
+
evaluateToIdentifier(
|
|
31
|
+
"import.meta.glob",
|
|
32
|
+
"import.meta",
|
|
33
|
+
() => ["glob"],
|
|
34
|
+
true
|
|
35
|
+
)(expr)
|
|
36
|
+
);
|
|
37
|
+
parser.hooks.call.for("import.meta.glob").tap(PLUGIN_NAME, (expr) => {
|
|
38
|
+
const {
|
|
39
|
+
options: globOptions,
|
|
40
|
+
errors,
|
|
41
|
+
warnings
|
|
42
|
+
} = parseImportMetaGlobCall(/** @type {CallExpression} */ (expr), parser);
|
|
43
|
+
for (const warning of warnings) {
|
|
44
|
+
parser.state.module.addWarning(warning);
|
|
45
|
+
}
|
|
46
|
+
if (errors.length) {
|
|
47
|
+
for (const error of errors) parser.state.current.addError(error);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (!globOptions) return;
|
|
51
|
+
const dep = new ImportMetaGlobDependency(
|
|
52
|
+
{
|
|
53
|
+
request: `${globOptions.baseDir}${globOptions.query}`,
|
|
54
|
+
recursive: globOptions.recursive,
|
|
55
|
+
regExp: false,
|
|
56
|
+
patterns: globOptions.patterns,
|
|
57
|
+
requestContext: globOptions.requestContext,
|
|
58
|
+
importName: globOptions.importName,
|
|
59
|
+
exhaustive: globOptions.exhaustive,
|
|
60
|
+
caseSensitive: globOptions.caseSensitive,
|
|
61
|
+
referencedExports: globOptions.referencedExports,
|
|
62
|
+
namespaceObject:
|
|
63
|
+
/** @type {import("../Module").BuildMeta} */
|
|
64
|
+
(parser.state.module.buildMeta).strictHarmonyModule
|
|
65
|
+
? "strict"
|
|
66
|
+
: true,
|
|
67
|
+
mode: globOptions.mode,
|
|
68
|
+
category: "esm"
|
|
69
|
+
},
|
|
70
|
+
globOptions.range
|
|
71
|
+
);
|
|
72
|
+
dep.loc = parser.getLocation(expr);
|
|
73
|
+
dep.optional = Boolean(parser.scope.inTry);
|
|
74
|
+
parser.state.current.addDependency(dep);
|
|
75
|
+
return true;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
};
|