@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
|
9
9
|
const HotUpdateChunk = require("../HotUpdateChunk");
|
|
10
|
+
const {
|
|
11
|
+
ASSET_URL_TYPE,
|
|
12
|
+
JAVASCRIPT_TYPE
|
|
13
|
+
} = require("../ModuleSourceTypeConstants");
|
|
10
14
|
const {
|
|
11
15
|
ASSET_MODULE_TYPE,
|
|
12
16
|
ASSET_MODULE_TYPE_BYTES,
|
|
@@ -18,20 +22,31 @@ const {
|
|
|
18
22
|
const { compareModulesByFullName } = require("../util/comparators");
|
|
19
23
|
const createHash = require("../util/createHash");
|
|
20
24
|
const { getUndoPath } = require("../util/identifier");
|
|
21
|
-
const
|
|
25
|
+
const lazyModule = require("../util/lazyModule");
|
|
26
|
+
const preloadModuleType = require("../util/preloadModuleType");
|
|
22
27
|
const { PUBLIC_PATH_AUTO } = require("../util/publicPathPlaceholder");
|
|
23
28
|
|
|
24
|
-
/** @
|
|
25
|
-
/** @
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/**
|
|
29
|
+
/** @import { Source } from "webpack-sources" */
|
|
30
|
+
/** @import { Schema } from "schema-utils" */
|
|
31
|
+
/**
|
|
32
|
+
* @import {
|
|
33
|
+
* AssetGeneratorDataUrl,
|
|
34
|
+
* AssetModuleOutputPath,
|
|
35
|
+
* RawPublicPath,
|
|
36
|
+
* AssetModuleFilename
|
|
37
|
+
* } from "../../declarations/WebpackOptions"
|
|
38
|
+
*/
|
|
39
|
+
/**
|
|
40
|
+
* @import {
|
|
41
|
+
* AssetInfo,
|
|
42
|
+
* ExecuteModuleObject,
|
|
43
|
+
* WebpackRequire
|
|
44
|
+
* } from "../Compilation"
|
|
45
|
+
*/
|
|
46
|
+
/** @import Compiler from "../Compiler" */
|
|
47
|
+
/** @import { AssetModuleBuildInfo } from "./AssetModule" */
|
|
48
|
+
/** @import { CodeGenerationResult } from "../Module" */
|
|
49
|
+
/** @import NormalModule from "../NormalModule" */
|
|
35
50
|
|
|
36
51
|
/**
|
|
37
52
|
* Returns definition.
|
|
@@ -54,17 +69,19 @@ const generatorValidationOptions = {
|
|
|
54
69
|
baseDataPath: "generator"
|
|
55
70
|
};
|
|
56
71
|
|
|
57
|
-
const getAssetGenerator =
|
|
58
|
-
const getAssetParser =
|
|
59
|
-
const getAssetSourceParser =
|
|
60
|
-
const getAssetBytesParser =
|
|
61
|
-
const getAssetSourceGenerator =
|
|
72
|
+
const getAssetGenerator = lazyModule(() => require("./AssetGenerator"));
|
|
73
|
+
const getAssetParser = lazyModule(() => require("./AssetParser"));
|
|
74
|
+
const getAssetSourceParser = lazyModule(() => require("./AssetSourceParser"));
|
|
75
|
+
const getAssetBytesParser = lazyModule(() => require("./AssetBytesParser"));
|
|
76
|
+
const getAssetSourceGenerator = lazyModule(() =>
|
|
62
77
|
require("./AssetSourceGenerator")
|
|
63
78
|
);
|
|
64
|
-
const getAssetBytesGenerator =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const
|
|
79
|
+
const getAssetBytesGenerator = lazyModule(() =>
|
|
80
|
+
require("./AssetBytesGenerator")
|
|
81
|
+
);
|
|
82
|
+
const getAssetModule = lazyModule(() => require("./AssetModule"));
|
|
83
|
+
const getWebManifestParser = lazyModule(() => require("./WebManifestParser"));
|
|
84
|
+
const getWebManifestGenerator = lazyModule(() =>
|
|
68
85
|
require("./WebManifestGenerator")
|
|
69
86
|
);
|
|
70
87
|
|
|
@@ -98,7 +115,33 @@ class AssetModulesPlugin {
|
|
|
98
115
|
compiler.hooks.compilation.tap(
|
|
99
116
|
PLUGIN_NAME,
|
|
100
117
|
(compilation, { normalModuleFactory }) => {
|
|
101
|
-
|
|
118
|
+
preloadModuleType(normalModuleFactory, PLUGIN_NAME, [
|
|
119
|
+
[
|
|
120
|
+
ASSET_MODULE_TYPE,
|
|
121
|
+
[getAssetModule, getAssetParser, getAssetGenerator]
|
|
122
|
+
],
|
|
123
|
+
[
|
|
124
|
+
ASSET_MODULE_TYPE_INLINE,
|
|
125
|
+
[getAssetModule, getAssetParser, getAssetGenerator]
|
|
126
|
+
],
|
|
127
|
+
[
|
|
128
|
+
ASSET_MODULE_TYPE_RESOURCE,
|
|
129
|
+
[getAssetModule, getAssetParser, getAssetGenerator]
|
|
130
|
+
],
|
|
131
|
+
[
|
|
132
|
+
ASSET_MODULE_TYPE_SOURCE,
|
|
133
|
+
[getAssetModule, getAssetSourceParser, getAssetSourceGenerator]
|
|
134
|
+
],
|
|
135
|
+
[
|
|
136
|
+
ASSET_MODULE_TYPE_BYTES,
|
|
137
|
+
[getAssetModule, getAssetBytesParser, getAssetBytesGenerator]
|
|
138
|
+
],
|
|
139
|
+
[
|
|
140
|
+
ASSET_MODULE_TYPE_WEBMANIFEST,
|
|
141
|
+
[getWebManifestParser, getWebManifestGenerator]
|
|
142
|
+
]
|
|
143
|
+
]);
|
|
144
|
+
|
|
102
145
|
for (const type of [
|
|
103
146
|
ASSET_MODULE_TYPE,
|
|
104
147
|
ASSET_MODULE_TYPE_BYTES,
|
|
@@ -108,11 +151,11 @@ class AssetModulesPlugin {
|
|
|
108
151
|
]) {
|
|
109
152
|
normalModuleFactory.hooks.createModuleClass
|
|
110
153
|
.for(type)
|
|
111
|
-
.tap(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
);
|
|
154
|
+
.tap(PLUGIN_NAME, (createData, _resolveData) => {
|
|
155
|
+
const AssetModule = getAssetModule.loaded();
|
|
156
|
+
|
|
157
|
+
return new AssetModule(createData, this.options.sideEffectFree);
|
|
158
|
+
});
|
|
116
159
|
}
|
|
117
160
|
|
|
118
161
|
normalModuleFactory.hooks.createParser
|
|
@@ -139,35 +182,35 @@ class AssetModulesPlugin {
|
|
|
139
182
|
};
|
|
140
183
|
}
|
|
141
184
|
|
|
142
|
-
const AssetParser = getAssetParser();
|
|
185
|
+
const AssetParser = getAssetParser.loaded();
|
|
143
186
|
|
|
144
187
|
return new AssetParser(dataUrlCondition);
|
|
145
188
|
});
|
|
146
189
|
normalModuleFactory.hooks.createParser
|
|
147
190
|
.for(ASSET_MODULE_TYPE_INLINE)
|
|
148
191
|
.tap(PLUGIN_NAME, (_parserOptions) => {
|
|
149
|
-
const AssetParser = getAssetParser();
|
|
192
|
+
const AssetParser = getAssetParser.loaded();
|
|
150
193
|
|
|
151
194
|
return new AssetParser(true);
|
|
152
195
|
});
|
|
153
196
|
normalModuleFactory.hooks.createParser
|
|
154
197
|
.for(ASSET_MODULE_TYPE_RESOURCE)
|
|
155
198
|
.tap(PLUGIN_NAME, (_parserOptions) => {
|
|
156
|
-
const AssetParser = getAssetParser();
|
|
199
|
+
const AssetParser = getAssetParser.loaded();
|
|
157
200
|
|
|
158
201
|
return new AssetParser(false);
|
|
159
202
|
});
|
|
160
203
|
normalModuleFactory.hooks.createParser
|
|
161
204
|
.for(ASSET_MODULE_TYPE_SOURCE)
|
|
162
205
|
.tap(PLUGIN_NAME, (_parserOptions) => {
|
|
163
|
-
const AssetSourceParser = getAssetSourceParser();
|
|
206
|
+
const AssetSourceParser = getAssetSourceParser.loaded();
|
|
164
207
|
|
|
165
208
|
return new AssetSourceParser();
|
|
166
209
|
});
|
|
167
210
|
normalModuleFactory.hooks.createParser
|
|
168
211
|
.for(ASSET_MODULE_TYPE_BYTES)
|
|
169
212
|
.tap(PLUGIN_NAME, (_parserOptions) => {
|
|
170
|
-
const AssetBytesParser = getAssetBytesParser();
|
|
213
|
+
const AssetBytesParser = getAssetBytesParser.loaded();
|
|
171
214
|
|
|
172
215
|
return new AssetBytesParser();
|
|
173
216
|
});
|
|
@@ -244,7 +287,7 @@ class AssetModulesPlugin {
|
|
|
244
287
|
outputPath = generatorOptions.outputPath;
|
|
245
288
|
}
|
|
246
289
|
|
|
247
|
-
const AssetGenerator = getAssetGenerator();
|
|
290
|
+
const AssetGenerator = getAssetGenerator.loaded();
|
|
248
291
|
|
|
249
292
|
return new AssetGenerator(
|
|
250
293
|
compilation.moduleGraph,
|
|
@@ -260,7 +303,7 @@ class AssetModulesPlugin {
|
|
|
260
303
|
normalModuleFactory.hooks.createGenerator
|
|
261
304
|
.for(ASSET_MODULE_TYPE_SOURCE)
|
|
262
305
|
.tap(PLUGIN_NAME, () => {
|
|
263
|
-
const AssetSourceGenerator = getAssetSourceGenerator();
|
|
306
|
+
const AssetSourceGenerator = getAssetSourceGenerator.loaded();
|
|
264
307
|
|
|
265
308
|
return new AssetSourceGenerator(compilation.moduleGraph);
|
|
266
309
|
});
|
|
@@ -268,7 +311,7 @@ class AssetModulesPlugin {
|
|
|
268
311
|
normalModuleFactory.hooks.createGenerator
|
|
269
312
|
.for(ASSET_MODULE_TYPE_BYTES)
|
|
270
313
|
.tap(PLUGIN_NAME, () => {
|
|
271
|
-
const AssetBytesGenerator = getAssetBytesGenerator();
|
|
314
|
+
const AssetBytesGenerator = getAssetBytesGenerator.loaded();
|
|
272
315
|
|
|
273
316
|
return new AssetBytesGenerator(compilation.moduleGraph);
|
|
274
317
|
});
|
|
@@ -306,7 +349,7 @@ class AssetModulesPlugin {
|
|
|
306
349
|
|
|
307
350
|
if (errored) {
|
|
308
351
|
const erroredModule = /** @type {NormalModule} */ (module);
|
|
309
|
-
const AssetGenerator = getAssetGenerator();
|
|
352
|
+
const AssetGenerator = getAssetGenerator.loaded();
|
|
310
353
|
const [fullContentHash, contentHash] =
|
|
311
354
|
AssetGenerator.getFullContentHash(
|
|
312
355
|
erroredModule,
|
|
@@ -373,14 +416,14 @@ class AssetModulesPlugin {
|
|
|
373
416
|
normalModuleFactory.hooks.createParser
|
|
374
417
|
.for(ASSET_MODULE_TYPE_WEBMANIFEST)
|
|
375
418
|
.tap(PLUGIN_NAME, () => {
|
|
376
|
-
const WebManifestParser = getWebManifestParser();
|
|
419
|
+
const WebManifestParser = getWebManifestParser.loaded();
|
|
377
420
|
|
|
378
421
|
return new WebManifestParser();
|
|
379
422
|
});
|
|
380
423
|
normalModuleFactory.hooks.createGenerator
|
|
381
424
|
.for(ASSET_MODULE_TYPE_WEBMANIFEST)
|
|
382
425
|
.tap(PLUGIN_NAME, () => {
|
|
383
|
-
const WebManifestGenerator = getWebManifestGenerator();
|
|
426
|
+
const WebManifestGenerator = getWebManifestGenerator.loaded();
|
|
384
427
|
|
|
385
428
|
return new WebManifestGenerator(compilation.moduleGraph);
|
|
386
429
|
});
|
|
@@ -462,6 +505,35 @@ class AssetModulesPlugin {
|
|
|
462
505
|
);
|
|
463
506
|
}
|
|
464
507
|
);
|
|
508
|
+
|
|
509
|
+
compilation.hooks.executeModule.tap(PLUGIN_NAME, (options, context) => {
|
|
510
|
+
const { codeGenerationResult } = options;
|
|
511
|
+
// A wrapper-less asset (`asset-url` only) would yield `{}` when
|
|
512
|
+
// required at build time — emulate the wrapper's exports instead.
|
|
513
|
+
if (!options.module.type.startsWith(ASSET_MODULE_TYPE)) return;
|
|
514
|
+
if (codeGenerationResult.sources.has(JAVASCRIPT_TYPE)) return;
|
|
515
|
+
const data = codeGenerationResult.data;
|
|
516
|
+
if (!data) return;
|
|
517
|
+
const moduleObject =
|
|
518
|
+
/** @type {ExecuteModuleObject} */
|
|
519
|
+
(options.moduleObject);
|
|
520
|
+
// `__webpack_require__.p` honors the `importModule` publicPath
|
|
521
|
+
// override (`URLDependency` requests it for wrapper-less assets).
|
|
522
|
+
const publicPath =
|
|
523
|
+
/** @type {WebpackRequire} */
|
|
524
|
+
(context.__webpack_require__).p;
|
|
525
|
+
const filename = data.get("filename");
|
|
526
|
+
if (typeof filename === "string" && typeof publicPath === "string") {
|
|
527
|
+
moduleObject.exports = publicPath + filename;
|
|
528
|
+
return;
|
|
529
|
+
}
|
|
530
|
+
// data: uris (and assets without a runtime publicPath) resolve
|
|
531
|
+
// chunk-independently — use the baked `asset-url`.
|
|
532
|
+
const url = data.get("url");
|
|
533
|
+
if (url && typeof url[ASSET_URL_TYPE] === "string") {
|
|
534
|
+
moduleObject.exports = url[ASSET_URL_TYPE];
|
|
535
|
+
}
|
|
536
|
+
});
|
|
465
537
|
}
|
|
466
538
|
);
|
|
467
539
|
}
|
package/lib/asset/AssetParser.js
CHANGED
|
@@ -7,13 +7,15 @@
|
|
|
7
7
|
|
|
8
8
|
const Parser = require("../Parser");
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
/** @
|
|
10
|
+
/**
|
|
11
|
+
* @import {
|
|
12
|
+
* AssetParserDataUrlOptions,
|
|
13
|
+
* AssetParserOptions
|
|
14
|
+
* } from "../../declarations/WebpackOptions"
|
|
15
|
+
*/
|
|
16
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
17
|
+
/** @import { AssetModuleBuildInfo } from "./AssetModule" */
|
|
18
|
+
/** @import { ParserState, PreparsedAst } from "../Parser" */
|
|
17
19
|
|
|
18
20
|
/** @typedef {((source: string | Buffer, context: { filename: string, module: Module }) => boolean)} AssetParserDataUrlFunction */
|
|
19
21
|
|
|
@@ -19,14 +19,20 @@ const {
|
|
|
19
19
|
NO_TYPES
|
|
20
20
|
} = require("../ModuleSourceTypeConstants");
|
|
21
21
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
/** @
|
|
25
|
-
/** @
|
|
26
|
-
/** @
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const { languageOfFilename } = require("../util/dataURL");
|
|
23
|
+
|
|
24
|
+
/** @import { Source } from "webpack-sources" */
|
|
25
|
+
/** @import { GenerateContext, UpdateHashContext } from "../Generator" */
|
|
26
|
+
/** @import Hash from "../util/Hash" */
|
|
27
|
+
/**
|
|
28
|
+
* @import {
|
|
29
|
+
* ConcatenationBailoutReasonContext,
|
|
30
|
+
* SourceType,
|
|
31
|
+
* SourceTypes
|
|
32
|
+
* } from "../Module"
|
|
33
|
+
*/
|
|
34
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
35
|
+
/** @import NormalModule from "../NormalModule" */
|
|
30
36
|
|
|
31
37
|
class AssetSourceGenerator extends Generator {
|
|
32
38
|
/**
|
|
@@ -60,8 +66,11 @@ class AssetSourceGenerator extends Generator {
|
|
|
60
66
|
}
|
|
61
67
|
|
|
62
68
|
const content = originalSource.source();
|
|
63
|
-
const encodedSource =
|
|
64
|
-
|
|
69
|
+
const encodedSource = AssetSourceGenerator._renderEmbedded(
|
|
70
|
+
module,
|
|
71
|
+
typeof content === "string" ? content : content.toString("utf8"),
|
|
72
|
+
runtimeTemplate
|
|
73
|
+
);
|
|
65
74
|
|
|
66
75
|
/** @type {string} */
|
|
67
76
|
let sourceContent;
|
|
@@ -99,6 +108,46 @@ class AssetSourceGenerator extends Generator {
|
|
|
99
108
|
}
|
|
100
109
|
}
|
|
101
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Offer the file's text to `renderEmbeddedSource` before it is embedded in
|
|
113
|
+
* JavaScript. Declines a file whose name names no language webpack knows.
|
|
114
|
+
* @param {NormalModule} module the module holding the text
|
|
115
|
+
* @param {string} text the file's text
|
|
116
|
+
* @param {GenerateContext["runtimeTemplate"]} runtimeTemplate runtime template
|
|
117
|
+
* @returns {string} the rendered text, or `text` when nothing rendered it
|
|
118
|
+
*/
|
|
119
|
+
static _renderEmbedded(module, text, runtimeTemplate) {
|
|
120
|
+
if (!runtimeTemplate) return text;
|
|
121
|
+
// Untapped, nothing can change: no mime lookup and no source to wrap.
|
|
122
|
+
const { compilation } = runtimeTemplate;
|
|
123
|
+
if (compilation.hooks.renderEmbeddedSource.taps.length === 0) return text;
|
|
124
|
+
const type = languageOfFilename(module.nameForCondition());
|
|
125
|
+
if (type === undefined) return text;
|
|
126
|
+
const rendered = compilation._resolveEmbeddedSource(new RawSource(text), {
|
|
127
|
+
type,
|
|
128
|
+
hostType: JAVASCRIPT_TYPE,
|
|
129
|
+
module
|
|
130
|
+
});
|
|
131
|
+
return /** @type {string} */ (rendered.source());
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Updates the hash with the data contributed by this instance.
|
|
136
|
+
* @param {Hash} hash hash that will be modified
|
|
137
|
+
* @param {UpdateHashContext} updateHashContext context for updating hash
|
|
138
|
+
*/
|
|
139
|
+
updateHash(hash, updateHashContext) {
|
|
140
|
+
const { module, runtimeTemplate } = updateHashContext;
|
|
141
|
+
// What a tap varies on has to reach the key, or a changed option replays.
|
|
142
|
+
if (
|
|
143
|
+
runtimeTemplate &&
|
|
144
|
+
runtimeTemplate.compilation.hooks.renderEmbeddedSource.taps.length > 0 &&
|
|
145
|
+
languageOfFilename(module.nameForCondition())
|
|
146
|
+
) {
|
|
147
|
+
runtimeTemplate.compilation.hooks.embeddedSourceHash.call(module, hash);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
102
151
|
/**
|
|
103
152
|
* Generates fallback output for the provided error condition.
|
|
104
153
|
* @param {Error} error the error
|
|
@@ -109,9 +158,7 @@ class AssetSourceGenerator extends Generator {
|
|
|
109
158
|
generateError(error, module, generateContext) {
|
|
110
159
|
switch (generateContext.type) {
|
|
111
160
|
case JAVASCRIPT_TYPE: {
|
|
112
|
-
return new RawSource(
|
|
113
|
-
`throw new Error(${JSON.stringify(error.message)});`
|
|
114
|
-
);
|
|
161
|
+
return new RawSource(Generator.throwBuildErrorCode(error));
|
|
115
162
|
}
|
|
116
163
|
default:
|
|
117
164
|
return null;
|
|
@@ -7,10 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const Parser = require("../Parser");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/** @typedef {import("../Parser").ParserState} ParserState */
|
|
13
|
-
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
|
10
|
+
/** @import { BuildInfo, BuildMeta } from "../Module" */
|
|
11
|
+
/** @import { ParserState, PreparsedAst } from "../Parser" */
|
|
14
12
|
|
|
15
13
|
class AssetSourceParser extends Parser {
|
|
16
14
|
/**
|
|
@@ -15,24 +15,32 @@ const { ASSET_MODULE_TYPE_RAW_DATA_URL } = require("../ModuleTypeConstants");
|
|
|
15
15
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
16
16
|
const makeSerializable = require("../util/makeSerializable");
|
|
17
17
|
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/** @
|
|
24
|
-
/** @
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
18
|
+
/**
|
|
19
|
+
* @import {
|
|
20
|
+
* WebpackOptionsNormalizedWithDefaults as WebpackOptions
|
|
21
|
+
* } from "../config/defaults"
|
|
22
|
+
*/
|
|
23
|
+
/** @import Compilation from "../Compilation" */
|
|
24
|
+
/** @import { UpdateHashContext } from "../Dependency" */
|
|
25
|
+
/**
|
|
26
|
+
* @import {
|
|
27
|
+
* BuildCallback,
|
|
28
|
+
* RuntimeRequirements,
|
|
29
|
+
* CodeGenerationContext,
|
|
30
|
+
* CodeGenerationResult,
|
|
31
|
+
* CodeGenerationResultData,
|
|
32
|
+
* NeedBuildCallback,
|
|
33
|
+
* NeedBuildContext,
|
|
34
|
+
* Sources,
|
|
35
|
+
* SourceTypes
|
|
36
|
+
* } from "../Module"
|
|
37
|
+
*/
|
|
38
|
+
/** @import RequestShortener from "../RequestShortener" */
|
|
39
|
+
/** @import { ResolverWithOptions } from "../ResolverFactory" */
|
|
32
40
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Buffer | undefined, string, string]>} ObjectDeserializerContext */
|
|
33
41
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Buffer | undefined, string, string]>} ObjectSerializerContext */
|
|
34
|
-
/** @
|
|
35
|
-
/** @
|
|
42
|
+
/** @import Hash from "../util/Hash" */
|
|
43
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
36
44
|
|
|
37
45
|
class RawDataUrlModule extends Module {
|
|
38
46
|
/**
|
|
@@ -12,16 +12,14 @@ const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
|
|
|
12
12
|
const { PUBLIC_PATH_AUTO } = require("../util/publicPathPlaceholder");
|
|
13
13
|
const AssetGenerator = require("./AssetGenerator");
|
|
14
14
|
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/** @
|
|
22
|
-
/** @
|
|
23
|
-
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
24
|
-
/** @typedef {import("../NormalModule")} NormalModule */
|
|
15
|
+
/** @import { Source } from "webpack-sources" */
|
|
16
|
+
/** @import CodeGenerationResults from "../CodeGenerationResults" */
|
|
17
|
+
/** @import { DependencyConstructor } from "../Compilation" */
|
|
18
|
+
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
19
|
+
/** @import { GenerateContext } from "../Generator" */
|
|
20
|
+
/** @import { SourceType, SourceTypes } from "../Module" */
|
|
21
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
22
|
+
/** @import NormalModule from "../NormalModule" */
|
|
25
23
|
|
|
26
24
|
const WEBMANIFEST_TYPE = "webmanifest";
|
|
27
25
|
const WEBMANIFEST_TYPES = new Set([WEBMANIFEST_TYPE]);
|
|
@@ -9,13 +9,9 @@ const { parse } = require("acorn");
|
|
|
9
9
|
const Parser = require("../Parser");
|
|
10
10
|
const HtmlSourceDependency = require("../dependencies/HtmlSourceDependency");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @typedef {import("estree").Property} Property */
|
|
16
|
-
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
17
|
-
/** @typedef {import("../Parser").ParserState} ParserState */
|
|
18
|
-
/** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
|
|
12
|
+
/** @import { Expression, ObjectExpression, Program, Property } from "estree" */
|
|
13
|
+
/** @import { BuildInfo } from "../Module" */
|
|
14
|
+
/** @import { ParserState, PreparsedAst } from "../Parser" */
|
|
19
15
|
|
|
20
16
|
// acorn decorates every node with numeric source offsets (absent from the estree types).
|
|
21
17
|
/** @typedef {{ start: number, end: number }} Positioned */
|
|
@@ -26,6 +22,7 @@ const ABSOLUTE_URL_SCHEME_REGEXP = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
|
|
|
26
22
|
// Manifest members whose array items carry an asset `src` (`icons[].src`,
|
|
27
23
|
// `screenshots[].src`, and `shortcuts[].icons[].src` — the last nests under `icons`).
|
|
28
24
|
const ICON_CONTAINER_KEYS = new Set(["icons", "screenshots"]);
|
|
25
|
+
const BOM_BYTE_LENGTH = 3;
|
|
29
26
|
|
|
30
27
|
/**
|
|
31
28
|
* Parses a Web App Manifest (`.webmanifest`) so its icon/screenshot `src`
|
|
@@ -41,14 +38,28 @@ class WebManifestParser extends Parser {
|
|
|
41
38
|
* @returns {ParserState} the parser state
|
|
42
39
|
*/
|
|
43
40
|
parse(source, state) {
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
// The generator replaces over the raw buffer, so the emitted ranges are
|
|
42
|
+
// byte offsets rather than the UTF-16 ones acorn reports.
|
|
43
|
+
const binary = Buffer.isBuffer(source);
|
|
44
|
+
if (binary) {
|
|
45
|
+
source = /** @type {Buffer} */ (source).toString("utf8");
|
|
46
46
|
} else if (typeof source === "object") {
|
|
47
47
|
throw new Error("webpackAst is unexpected for the WebManifestParser");
|
|
48
48
|
}
|
|
49
|
+
let leadingBytes = 0;
|
|
49
50
|
if (source[0] === "") {
|
|
50
51
|
source = source.slice(1);
|
|
52
|
+
leadingBytes = binary ? BOM_BYTE_LENGTH : 1;
|
|
51
53
|
}
|
|
54
|
+
const text = /** @type {string} */ (source);
|
|
55
|
+
const asciiOnly = !binary || Buffer.byteLength(text) === text.length;
|
|
56
|
+
/**
|
|
57
|
+
* @param {number} offset offset in UTF-16 code units into `text`
|
|
58
|
+
* @returns {number} matching offset into the module source
|
|
59
|
+
*/
|
|
60
|
+
const toSourceOffset = (offset) =>
|
|
61
|
+
(asciiOnly ? offset : Buffer.byteLength(text.slice(0, offset))) +
|
|
62
|
+
leadingBytes;
|
|
52
63
|
|
|
53
64
|
const module = state.module;
|
|
54
65
|
// Without `buildHttp` there is no handler to fetch remote icons, so an
|
|
@@ -111,7 +122,10 @@ class WebManifestParser extends Parser {
|
|
|
111
122
|
const { start, end } = /** @type {Positioned} */ (
|
|
112
123
|
/** @type {unknown} */ (value)
|
|
113
124
|
);
|
|
114
|
-
const dep = new HtmlSourceDependency(url, [
|
|
125
|
+
const dep = new HtmlSourceDependency(url, [
|
|
126
|
+
toSourceOffset(start),
|
|
127
|
+
toSourceOffset(end - 2)
|
|
128
|
+
]);
|
|
115
129
|
module.addDependency(dep);
|
|
116
130
|
module.addCodeGenerationDependency(dep);
|
|
117
131
|
}
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
10
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
11
|
+
/** @import Module from "../Module" */
|
|
12
12
|
|
|
13
13
|
/** @typedef {Set<Module>} Modules */
|
|
14
14
|
|
|
@@ -32,16 +32,22 @@ const getOutgoingAsyncModules = (moduleGraph, module) => {
|
|
|
32
32
|
const outgoingConnectionMap =
|
|
33
33
|
moduleGraph.getOutgoingConnectionsByModule(module);
|
|
34
34
|
if (outgoingConnectionMap) {
|
|
35
|
-
|
|
35
|
+
// Walk the imports in source order: the spec gathers these from
|
|
36
|
+
// `[[RequestedModules]]`, and their evaluation order is observable.
|
|
37
|
+
for (const dependency of module.dependencies) {
|
|
38
|
+
if (!(dependency instanceof HarmonyImportDependency)) continue;
|
|
39
|
+
const referenced = moduleGraph.getModule(dependency);
|
|
40
|
+
if (!referenced || seen.has(referenced)) continue;
|
|
41
|
+
const connections = outgoingConnectionMap.get(referenced);
|
|
36
42
|
if (
|
|
43
|
+
connections &&
|
|
37
44
|
connections.some(
|
|
38
45
|
(c) =>
|
|
39
46
|
c.dependency instanceof HarmonyImportDependency &&
|
|
40
47
|
c.isTargetActive(undefined)
|
|
41
|
-
)
|
|
42
|
-
module
|
|
48
|
+
)
|
|
43
49
|
) {
|
|
44
|
-
g(
|
|
50
|
+
g(referenced);
|
|
45
51
|
}
|
|
46
52
|
}
|
|
47
53
|
}
|
|
@@ -9,8 +9,8 @@ const InitFragment = require("../InitFragment");
|
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
10
|
const Template = require("../Template");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
12
|
+
/** @import { Source } from "webpack-sources" */
|
|
13
|
+
/** @import { GenerateContext } from "../Generator" */
|
|
14
14
|
|
|
15
15
|
/** @typedef {Map<string, string>} Dependencies */
|
|
16
16
|
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
10
|
+
/** @import Compiler from "../Compiler" */
|
|
11
|
+
/** @import Module from "../Module" */
|
|
12
12
|
|
|
13
13
|
const PLUGIN_NAME = "InferAsyncModulesPlugin";
|
|
14
14
|
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
/** @
|
|
8
|
-
/** @
|
|
9
|
-
/** @
|
|
7
|
+
/** @import Module from "../Module" */
|
|
8
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
9
|
+
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Whether an async module is lowered to a generator: the target has no
|
|
13
13
|
* `async`/`await` but supports generators, and the module contains no
|
|
14
|
-
* top-level `for await…of` (which generators can't express).
|
|
14
|
+
* top-level `for await…of` or `await using` (which generators can't express).
|
|
15
15
|
* @param {Module} module module
|
|
16
16
|
* @param {ModuleGraph} moduleGraph module graph
|
|
17
17
|
* @param {RuntimeTemplate} runtimeTemplate runtime template
|