webpack 5.106.1 → 5.107.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 +2 -2
- package/lib/APIPlugin.js +4 -2
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +10 -1
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +26 -0
- package/lib/Chunk.js +46 -0
- package/lib/ChunkGraph.js +111 -0
- package/lib/ChunkGroup.js +57 -13
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CleanPlugin.js +14 -1
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +23 -8
- package/lib/Compilation.js +161 -27
- package/lib/Compiler.js +41 -17
- package/lib/ConcatenationScope.js +24 -1
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +4 -1
- package/lib/ContextExclusionPlugin.js +2 -1
- package/lib/ContextModule.js +14 -2
- package/lib/ContextModuleFactory.js +10 -0
- package/lib/ContextReplacementPlugin.js +4 -1
- package/lib/DefinePlugin.js +22 -9
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +48 -4
- 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 +3 -0
- package/lib/EntryPlugin.js +2 -1
- package/lib/Entrypoint.js +4 -0
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -10
- package/lib/ExportsInfo.js +56 -2
- package/lib/ExportsInfoApiPlugin.js +2 -1
- package/lib/ExternalModule.js +114 -15
- package/lib/ExternalModuleFactoryPlugin.js +15 -0
- package/lib/ExternalsPlugin.js +2 -1
- package/lib/FileSystemInfo.js +291 -71
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
- package/lib/FlagDependencyExportsPlugin.js +4 -1
- package/lib/FlagDependencyUsagePlugin.js +5 -1
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
- package/lib/Generator.js +16 -3
- package/lib/HotModuleReplacementPlugin.js +35 -9
- package/lib/IgnorePlugin.js +4 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +10 -0
- package/lib/JavascriptMetaInfoPlugin.js +2 -1
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +2 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +101 -19
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +3 -0
- package/lib/ModuleGraph.js +66 -0
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleSourceTypeConstants.js +32 -1
- package/lib/ModuleTemplate.js +8 -0
- package/lib/ModuleTypeConstants.js +12 -3
- package/lib/MultiCompiler.js +30 -2
- package/lib/MultiStats.js +8 -0
- package/lib/MultiWatching.js +3 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +11 -2
- package/lib/NormalModule.js +43 -33
- package/lib/NormalModuleFactory.js +35 -2
- package/lib/NormalModuleReplacementPlugin.js +1 -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 +2 -1
- package/lib/ProgressPlugin.js +158 -68
- package/lib/ProvidePlugin.js +3 -1
- package/lib/RawModule.js +12 -0
- package/lib/RecordIdsPlugin.js +8 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +6 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +13 -0
- package/lib/RuntimeTemplate.js +35 -1
- package/lib/SelfModuleFactory.js +2 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +3 -1
- package/lib/Stats.js +5 -0
- package/lib/Template.js +20 -0
- package/lib/TemplatedPathPlugin.js +10 -3
- package/lib/UseStrictPlugin.js +2 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
- package/lib/WarnDeprecatedOptionPlugin.js +2 -2
- package/lib/WarnNoModeSetPlugin.js +17 -2
- package/lib/WatchIgnorePlugin.js +4 -1
- package/lib/Watching.js +16 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +3 -1
- package/lib/WebpackOptionsApply.js +14 -1
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +12 -2
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +42 -10
- package/lib/asset/AssetModulesPlugin.js +7 -2
- package/lib/asset/AssetParser.js +2 -0
- package/lib/asset/AssetSourceGenerator.js +12 -2
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +11 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/buildChunkGraph.js +19 -6
- package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
- package/lib/cache/AddManagedPathsPlugin.js +2 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
- package/lib/cache/PackFileCacheStrategy.js +33 -4
- package/lib/cache/ResolverCachePlugin.js +10 -1
- package/lib/cache/getLazyHashedEtag.js +4 -0
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +33 -1
- package/lib/config/browserslistTargetHandler.js +2 -0
- package/lib/config/defaults.js +232 -12
- package/lib/config/normalization.js +15 -1
- package/lib/config/target.js +11 -0
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +12 -0
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +4 -0
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +2 -1
- package/lib/container/FallbackDependency.js +4 -0
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +12 -0
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/ModuleFederationPlugin.js +3 -1
- package/lib/container/RemoteModule.js +13 -0
- package/lib/container/RemoteRuntimeModule.js +1 -0
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +336 -100
- package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
- package/lib/css/CssLoadingRuntimeModule.js +23 -4
- package/lib/{CssModule.js → css/CssModule.js} +21 -15
- package/lib/css/CssModulesPlugin.js +235 -89
- package/lib/css/CssParser.js +616 -261
- package/lib/css/walkCssTokens.js +179 -2
- package/lib/debug/ProfilingPlugin.js +19 -1
- package/lib/dependencies/AMDDefineDependency.js +7 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
- package/lib/dependencies/AMDPlugin.js +4 -1
- package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
- package/lib/dependencies/AMDRequireContextDependency.js +3 -0
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
- package/lib/dependencies/AMDRequireDependency.js +4 -0
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +6 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
- package/lib/dependencies/CommonJsExportsDependency.js +4 -0
- package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
- package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
- package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
- package/lib/dependencies/CommonJsPlugin.js +4 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
- package/lib/dependencies/CommonJsRequireDependency.js +70 -4
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
- package/lib/dependencies/ConstDependency.js +6 -1
- package/lib/dependencies/ContextDependency.js +9 -2
- package/lib/dependencies/ContextDependencyHelpers.js +4 -1
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +4 -0
- package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
- package/lib/dependencies/CriticalDependencyWarning.js +2 -1
- package/lib/dependencies/CssIcssExportDependency.js +339 -66
- package/lib/dependencies/CssIcssImportDependency.js +53 -8
- package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
- package/lib/dependencies/CssImportDependency.js +12 -0
- package/lib/dependencies/CssUrlDependency.js +32 -0
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +3 -0
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/ExternalModuleDependency.js +5 -0
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
- package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
- package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
- package/lib/dependencies/HarmonyExports.js +2 -0
- package/lib/dependencies/HarmonyImportDependency.js +21 -2
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
- package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
- package/lib/dependencies/HtmlSourceDependency.js +127 -0
- package/lib/dependencies/ImportContextDependency.js +4 -0
- package/lib/dependencies/ImportDependency.js +5 -0
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +6 -0
- package/lib/dependencies/ImportParserPlugin.js +9 -2
- package/lib/dependencies/ImportPhase.js +7 -3
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +2 -0
- package/lib/dependencies/JsonExportsDependency.js +6 -1
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +2 -0
- package/lib/dependencies/LoaderPlugin.js +4 -1
- package/lib/dependencies/LocalModule.js +4 -0
- package/lib/dependencies/LocalModuleDependency.js +4 -0
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +6 -1
- package/lib/dependencies/PureExpressionDependency.js +7 -1
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/RequireEnsureDependency.js +4 -0
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +4 -0
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +3 -0
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
- package/lib/dependencies/StaticExportsDependency.js +3 -0
- package/lib/dependencies/SystemPlugin.js +5 -2
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/URLContextDependency.js +3 -0
- package/lib/dependencies/URLDependency.js +6 -0
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
- package/lib/dependencies/WorkerDependency.js +6 -1
- package/lib/dependencies/WorkerPlugin.js +11 -3
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +1 -0
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
- package/lib/{DllModule.js → dll/DllModule.js} +35 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
- package/lib/electron/ElectronTargetPlugin.js +2 -1
- 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} +4 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
- package/lib/errors/JSONParseError.js +114 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
- package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
- package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
- package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
- package/lib/errors/NonErrorEmittedError.js +28 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -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 +5 -1
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +20 -1
- package/lib/hmr/lazyCompilationBackend.js +2 -0
- package/lib/html/HtmlGenerator.js +379 -0
- package/lib/html/HtmlModulesPlugin.js +433 -0
- package/lib/html/HtmlParser.js +1489 -0
- package/lib/html/walkHtmlTokens.js +2733 -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 +22 -1
- 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 +39 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
- package/lib/javascript/BasicEvaluatedExpression.js +4 -2
- 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 +5 -1
- package/lib/javascript/JavascriptGenerator.js +10 -0
- package/lib/javascript/JavascriptModulesPlugin.js +112 -9
- package/lib/javascript/JavascriptParser.js +360 -16
- package/lib/javascript/JavascriptParserHelpers.js +7 -1
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +14 -25
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +16 -0
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +86 -1
- package/lib/library/SystemLibraryPlugin.js +8 -0
- package/lib/library/UmdLibraryPlugin.js +16 -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 +2 -1
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +2 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -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 +62 -6
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
- package/lib/optimize/InnerGraph.js +16 -1
- package/lib/optimize/InnerGraphPlugin.js +14 -2
- 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 +36 -8
- package/lib/optimize/RealContentHashPlugin.js +104 -26
- 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 +118 -4
- package/lib/optimize/SplitChunksPlugin.js +50 -2
- 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 +6 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -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 +18 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
- package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +43 -1
- package/lib/schemes/VirtualUrlPlugin.js +7 -2
- package/lib/serialization/AggregateErrorSerializer.js +2 -0
- package/lib/serialization/ArraySerializer.js +2 -0
- package/lib/serialization/BinaryMiddleware.js +20 -1
- package/lib/serialization/DateObjectSerializer.js +2 -0
- package/lib/serialization/ErrorObjectSerializer.js +3 -0
- package/lib/serialization/FileMiddleware.js +21 -0
- package/lib/serialization/MapObjectSerializer.js +2 -0
- package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
- package/lib/serialization/ObjectMiddleware.js +23 -0
- package/lib/serialization/PlainObjectSerializer.js +7 -0
- package/lib/serialization/RegExpObjectSerializer.js +2 -0
- package/lib/serialization/Serializer.js +5 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +2 -0
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +15 -0
- package/lib/sharing/ConsumeSharedPlugin.js +8 -3
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +4 -0
- package/lib/sharing/ProvideSharedModule.js +12 -1
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +5 -2
- package/lib/sharing/SharePlugin.js +2 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -0
- package/lib/sharing/resolveMatchedConfigs.js +4 -1
- package/lib/sharing/utils.js +8 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
- package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
- package/lib/stats/StatsFactory.js +13 -1
- package/lib/stats/StatsPrinter.js +7 -0
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +8 -2
- package/lib/util/AppendOnlyStackedSet.js +15 -0
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +22 -2
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +21 -0
- package/lib/util/LazySet.js +39 -0
- package/lib/util/LocConverter.js +53 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +14 -1
- package/lib/util/SetHelpers.js +3 -0
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +45 -0
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +13 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +33 -0
- package/lib/util/binarySearchBounds.js +1 -0
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +34 -3
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +9 -3
- package/lib/util/conventions.js +46 -1
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +1 -0
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +20 -0
- package/lib/util/extractSourceMap.js +1 -0
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +5 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
- package/lib/util/fs.js +71 -8
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/hash-digest.js +8 -0
- 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 +67 -0
- package/lib/util/internalSerializables.js +35 -19
- package/lib/util/magicComment.js +10 -6
- package/lib/util/makeSerializable.js +6 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +1 -0
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +1 -0
- package/lib/util/registerExternalSerializer.js +20 -0
- 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 +1 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
- package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
- package/lib/wasm-sync/WebAssemblyParser.js +2 -0
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
- package/lib/web/FetchCompileWasmPlugin.js +13 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +13 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/package.json +31 -31
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +161 -57
- 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/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +22 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +5325 -353
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- /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
package/lib/validateSchema.js
CHANGED
|
@@ -69,6 +69,7 @@ const REMOVED = {
|
|
|
69
69
|
/* cSpell:enable */
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
|
+
* Processes the provided schema.
|
|
72
73
|
* @param {Parameters<typeof validate>[0]} schema a json schema
|
|
73
74
|
* @param {Parameters<typeof validate>[1]} options the options that should be validated
|
|
74
75
|
* @param {Parameters<typeof validate>[2]=} validationConfiguration configuration for generating errors
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
const enabledTypes = new WeakMap();
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
+
* Returns the set of wasm loading backends that have already been enabled for
|
|
18
|
+
* the compiler.
|
|
17
19
|
* @param {Compiler} compiler compiler instance
|
|
18
20
|
* @returns {WasmLoadingTypes} enabled types
|
|
19
21
|
*/
|
|
@@ -27,8 +29,14 @@ const getEnabledTypes = (compiler) => {
|
|
|
27
29
|
return set;
|
|
28
30
|
};
|
|
29
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Validates and enables named wasm loading backends by applying the plugin
|
|
34
|
+
* implementations that provide their runtime support.
|
|
35
|
+
*/
|
|
30
36
|
class EnableWasmLoadingPlugin {
|
|
31
37
|
/**
|
|
38
|
+
* Stores the wasm loading backend name that should be enabled for the
|
|
39
|
+
* compiler.
|
|
32
40
|
* @param {WasmLoadingType} type library type that should be available
|
|
33
41
|
*/
|
|
34
42
|
constructor(type) {
|
|
@@ -37,6 +45,8 @@ class EnableWasmLoadingPlugin {
|
|
|
37
45
|
}
|
|
38
46
|
|
|
39
47
|
/**
|
|
48
|
+
* Marks a custom or built-in wasm loading type as enabled for the compiler
|
|
49
|
+
* without applying additional built-in behavior.
|
|
40
50
|
* @param {Compiler} compiler the compiler instance
|
|
41
51
|
* @param {WasmLoadingType} type type of library
|
|
42
52
|
* @returns {void}
|
|
@@ -46,6 +56,8 @@ class EnableWasmLoadingPlugin {
|
|
|
46
56
|
}
|
|
47
57
|
|
|
48
58
|
/**
|
|
59
|
+
* Verifies that a wasm loading type has been enabled before code generation
|
|
60
|
+
* attempts to use it.
|
|
49
61
|
* @param {Compiler} compiler the compiler instance
|
|
50
62
|
* @param {WasmLoadingType} type type of library
|
|
51
63
|
* @returns {void}
|
|
@@ -63,7 +75,9 @@ class EnableWasmLoadingPlugin {
|
|
|
63
75
|
}
|
|
64
76
|
|
|
65
77
|
/**
|
|
66
|
-
*
|
|
78
|
+
* Enables the requested wasm loading backend once and applies the
|
|
79
|
+
* environment-specific plugins that provide its parser, generator, and
|
|
80
|
+
* runtime support.
|
|
67
81
|
* @param {Compiler} compiler the compiler instance
|
|
68
82
|
* @returns {void}
|
|
69
83
|
*/
|
|
@@ -16,12 +16,14 @@ const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
|
|
|
16
16
|
/** @typedef {import("../NormalModule")} NormalModule */
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
+
* Represents the async web assembly generator runtime component.
|
|
19
20
|
* @typedef {object} AsyncWebAssemblyGeneratorOptions
|
|
20
21
|
* @property {boolean=} mangleImports mangle imports
|
|
21
22
|
*/
|
|
22
23
|
|
|
23
24
|
class AsyncWebAssemblyGenerator extends Generator {
|
|
24
25
|
/**
|
|
26
|
+
* Creates an instance of AsyncWebAssemblyGenerator.
|
|
25
27
|
* @param {AsyncWebAssemblyGeneratorOptions} options options
|
|
26
28
|
*/
|
|
27
29
|
constructor(options) {
|
|
@@ -31,6 +33,7 @@ class AsyncWebAssemblyGenerator extends Generator {
|
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
/**
|
|
36
|
+
* Returns the source types available for this module.
|
|
34
37
|
* @param {NormalModule} module fresh module
|
|
35
38
|
* @returns {SourceTypes} available types (do not mutate)
|
|
36
39
|
*/
|
|
@@ -39,6 +42,7 @@ class AsyncWebAssemblyGenerator extends Generator {
|
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
/**
|
|
45
|
+
* Returns the estimated size for the requested source type.
|
|
42
46
|
* @param {NormalModule} module the module
|
|
43
47
|
* @param {SourceType=} type source type
|
|
44
48
|
* @returns {number} estimate size of the module
|
|
@@ -52,6 +56,7 @@ class AsyncWebAssemblyGenerator extends Generator {
|
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
/**
|
|
59
|
+
* Generates generated code for this runtime module.
|
|
55
60
|
* @param {NormalModule} module module for which the code should be generated
|
|
56
61
|
* @param {GenerateContext} generateContext context for generate
|
|
57
62
|
* @returns {Source | null} generated code
|
|
@@ -61,6 +66,7 @@ class AsyncWebAssemblyGenerator extends Generator {
|
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
/**
|
|
69
|
+
* Generates fallback output for the provided error condition.
|
|
64
70
|
* @param {Error} error the error
|
|
65
71
|
* @param {NormalModule} module module for which the code should be generated
|
|
66
72
|
* @param {GenerateContext} generateContext context for generate
|
|
@@ -22,11 +22,13 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
22
22
|
/** @typedef {import("../NormalModule")} NormalModule */
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
+
* Represents the async web assembly javascript generator runtime component.
|
|
25
26
|
* @typedef {{ request: string, importVar: string, dependency: WebAssemblyImportDependency }} ImportObjRequestItem
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
29
|
class AsyncWebAssemblyJavascriptGenerator extends Generator {
|
|
29
30
|
/**
|
|
31
|
+
* Returns the source types available for this module.
|
|
30
32
|
* @param {NormalModule} module fresh module
|
|
31
33
|
* @returns {SourceTypes} available types (do not mutate)
|
|
32
34
|
*/
|
|
@@ -35,6 +37,7 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
|
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
/**
|
|
40
|
+
* Returns the estimated size for the requested source type.
|
|
38
41
|
* @param {NormalModule} module the module
|
|
39
42
|
* @param {SourceType=} type source type
|
|
40
43
|
* @returns {number} estimate size of the module
|
|
@@ -50,6 +53,7 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
|
|
|
50
53
|
}
|
|
51
54
|
|
|
52
55
|
/**
|
|
56
|
+
* Generates generated code for this runtime module.
|
|
53
57
|
* @param {NormalModule} module module for which the code should be generated
|
|
54
58
|
* @param {GenerateContext} generateContext context for generate
|
|
55
59
|
* @returns {Source | null} generated code
|
|
@@ -253,6 +257,7 @@ class AsyncWebAssemblyJavascriptGenerator extends Generator {
|
|
|
253
257
|
}
|
|
254
258
|
|
|
255
259
|
/**
|
|
260
|
+
* Generates fallback output for the provided error condition.
|
|
256
261
|
* @param {Error} error the error
|
|
257
262
|
* @param {NormalModule} module module for which the code should be generated
|
|
258
263
|
* @param {GenerateContext} generateContext context for generate
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
const { SyncWaterfallHook } = require("tapable");
|
|
9
9
|
const Compilation = require("../Compilation");
|
|
10
10
|
const Generator = require("../Generator");
|
|
11
|
-
const { tryRunOrWebpackError } = require("../HookWebpackError");
|
|
12
11
|
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
|
|
13
12
|
const NormalModule = require("../NormalModule");
|
|
14
13
|
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
|
|
14
|
+
const { tryRunOrWebpackError } = require("../errors/HookWebpackError");
|
|
15
15
|
const { compareModulesByFullName } = require("../util/comparators");
|
|
16
16
|
const makeSerializable = require("../util/makeSerializable");
|
|
17
17
|
const memoize = require("../util/memoize");
|
|
@@ -27,7 +27,7 @@ const memoize = require("../util/memoize");
|
|
|
27
27
|
/** @typedef {import("../NormalModule").NormalModuleCreateData} NormalModuleCreateData */
|
|
28
28
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
29
29
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
30
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
30
|
+
/** @typedef {import("../errors/WebpackError")} WebpackError */
|
|
31
31
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
32
32
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
33
33
|
|
|
@@ -53,6 +53,7 @@ class AsyncWasmModule extends NormalModule {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
|
+
* Returns the unique identifier used to reference this module.
|
|
56
57
|
* @returns {string} a unique identifier of the module
|
|
57
58
|
*/
|
|
58
59
|
identifier() {
|
|
@@ -79,6 +80,7 @@ class AsyncWasmModule extends NormalModule {
|
|
|
79
80
|
}
|
|
80
81
|
|
|
81
82
|
/**
|
|
83
|
+
* Serializes this instance into the provided serializer context.
|
|
82
84
|
* @param {ObjectSerializerContext} context context
|
|
83
85
|
*/
|
|
84
86
|
serialize(context) {
|
|
@@ -117,6 +119,7 @@ class AsyncWasmModule extends NormalModule {
|
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
/**
|
|
122
|
+
* Restores this instance from the provided deserializer context.
|
|
120
123
|
* @param {ObjectDeserializerContext} context context
|
|
121
124
|
*/
|
|
122
125
|
deserialize(context) {
|
|
@@ -129,6 +132,7 @@ class AsyncWasmModule extends NormalModule {
|
|
|
129
132
|
makeSerializable(AsyncWasmModule, "webpack/lib/wasm-async/AsyncWasmModule");
|
|
130
133
|
|
|
131
134
|
/**
|
|
135
|
+
* Defines the web assembly render context type used by this module.
|
|
132
136
|
* @typedef {object} WebAssemblyRenderContext
|
|
133
137
|
* @property {Chunk} chunk the chunk
|
|
134
138
|
* @property {DependencyTemplates} dependencyTemplates the dependency templates
|
|
@@ -139,11 +143,13 @@ makeSerializable(AsyncWasmModule, "webpack/lib/wasm-async/AsyncWasmModule");
|
|
|
139
143
|
*/
|
|
140
144
|
|
|
141
145
|
/**
|
|
146
|
+
* Defines the compilation hooks type used by this module.
|
|
142
147
|
* @typedef {object} CompilationHooks
|
|
143
148
|
* @property {SyncWaterfallHook<[Source, Module, WebAssemblyRenderContext]>} renderModuleContent
|
|
144
149
|
*/
|
|
145
150
|
|
|
146
151
|
/**
|
|
152
|
+
* Defines the async web assembly modules plugin options type used by this module.
|
|
147
153
|
* @typedef {object} AsyncWebAssemblyModulesPluginOptions
|
|
148
154
|
* @property {boolean=} mangleImports mangle imports
|
|
149
155
|
*/
|
|
@@ -155,6 +161,7 @@ const PLUGIN_NAME = "AsyncWebAssemblyModulesPlugin";
|
|
|
155
161
|
|
|
156
162
|
class AsyncWebAssemblyModulesPlugin {
|
|
157
163
|
/**
|
|
164
|
+
* Returns the attached hooks.
|
|
158
165
|
* @param {Compilation} compilation the compilation
|
|
159
166
|
* @returns {CompilationHooks} the attached hooks
|
|
160
167
|
*/
|
|
@@ -179,6 +186,7 @@ class AsyncWebAssemblyModulesPlugin {
|
|
|
179
186
|
}
|
|
180
187
|
|
|
181
188
|
/**
|
|
189
|
+
* Creates an instance of AsyncWebAssemblyModulesPlugin.
|
|
182
190
|
* @param {AsyncWebAssemblyModulesPluginOptions} options options
|
|
183
191
|
*/
|
|
184
192
|
constructor(options) {
|
|
@@ -187,7 +195,7 @@ class AsyncWebAssemblyModulesPlugin {
|
|
|
187
195
|
}
|
|
188
196
|
|
|
189
197
|
/**
|
|
190
|
-
*
|
|
198
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
191
199
|
* @param {Compiler} compiler the compiler instance
|
|
192
200
|
* @returns {void}
|
|
193
201
|
*/
|
|
@@ -286,6 +294,7 @@ class AsyncWebAssemblyModulesPlugin {
|
|
|
286
294
|
}
|
|
287
295
|
|
|
288
296
|
/**
|
|
297
|
+
* Renders the newly generated source from rendering.
|
|
289
298
|
* @param {Module} module the rendered module
|
|
290
299
|
* @param {WebAssemblyRenderContext} renderContext options object
|
|
291
300
|
* @param {CompilationHooks} hooks hooks
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
const t = require("@webassemblyjs/ast");
|
|
9
9
|
const { decode } = require("@webassemblyjs/wasm-parser");
|
|
10
|
-
const EnvironmentNotSupportAsyncWarning = require("../EnvironmentNotSupportAsyncWarning");
|
|
11
10
|
const Parser = require("../Parser");
|
|
12
11
|
const StaticExportsDependency = require("../dependencies/StaticExportsDependency");
|
|
13
12
|
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
|
|
13
|
+
const EnvironmentNotSupportAsyncWarning = require("../errors/EnvironmentNotSupportAsyncWarning");
|
|
14
14
|
|
|
15
15
|
/** @typedef {import("./AsyncWebAssemblyModulesPlugin").AsyncWasmModuleClass} AsyncWasmModule */
|
|
16
16
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
@@ -31,6 +31,7 @@ const decoderOpts = {
|
|
|
31
31
|
|
|
32
32
|
class WebAssemblyParser extends Parser {
|
|
33
33
|
/**
|
|
34
|
+
* Parses the provided source and updates the parser state.
|
|
34
35
|
* @param {string | Buffer | PreparsedAst} source the source to parse
|
|
35
36
|
* @param {ParserState} state the parser state
|
|
36
37
|
* @returns {ParserState} the parser state
|
|
@@ -16,9 +16,14 @@ const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRun
|
|
|
16
16
|
|
|
17
17
|
const PLUGIN_NAME = "UniversalCompileAsyncWasmPlugin";
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Enables async WebAssembly loading that works in both browser-like and Node.js
|
|
21
|
+
* environments by selecting the appropriate binary-loading strategy at runtime.
|
|
22
|
+
*/
|
|
19
23
|
class UniversalCompileAsyncWasmPlugin {
|
|
20
24
|
/**
|
|
21
|
-
*
|
|
25
|
+
* Registers compilation hooks that attach the universal async wasm runtime
|
|
26
|
+
* to chunks using `wasmLoading: "universal"`.
|
|
22
27
|
* @param {Compiler} compiler the compiler instance
|
|
23
28
|
* @returns {void}
|
|
24
29
|
*/
|
|
@@ -26,6 +31,8 @@ class UniversalCompileAsyncWasmPlugin {
|
|
|
26
31
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
27
32
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
|
28
33
|
/**
|
|
34
|
+
* Determines whether the chunk should use the universal async wasm
|
|
35
|
+
* loading backend.
|
|
29
36
|
* @param {Chunk} chunk chunk
|
|
30
37
|
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
|
31
38
|
*/
|
|
@@ -44,6 +51,8 @@ class UniversalCompileAsyncWasmPlugin {
|
|
|
44
51
|
"}"
|
|
45
52
|
]);
|
|
46
53
|
/**
|
|
54
|
+
* Generates setup code that decides whether the current environment can
|
|
55
|
+
* use `fetch` and captures the wasm module URL.
|
|
47
56
|
* @param {string} path path
|
|
48
57
|
* @returns {string} code
|
|
49
58
|
*/
|
|
@@ -53,6 +62,8 @@ class UniversalCompileAsyncWasmPlugin {
|
|
|
53
62
|
`var wasmUrl = ${path};`
|
|
54
63
|
]);
|
|
55
64
|
/**
|
|
65
|
+
* Generates the runtime expression that fetches the binary in browsers
|
|
66
|
+
* or reads it from the filesystem in Node.js.
|
|
56
67
|
* @type {(path: string) => string}
|
|
57
68
|
*/
|
|
58
69
|
const generateLoadBinaryCode = () =>
|
|
@@ -4,10 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const WebpackError = require("../WebpackError");
|
|
7
|
+
const WebpackError = require("../errors/WebpackError");
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
class UnsupportedWebAssemblyFeatureError extends WebpackError {
|
|
10
10
|
/**
|
|
11
|
+
* Creates an instance of UnsupportedWebAssemblyFeatureError.
|
|
11
12
|
* @param {string} message Error message
|
|
12
13
|
*/
|
|
13
14
|
constructor(message) {
|
|
@@ -17,4 +18,6 @@ module.exports = class UnsupportedWebAssemblyFeatureError extends WebpackError {
|
|
|
17
18
|
this.name = "UnsupportedWebAssemblyFeatureError";
|
|
18
19
|
this.hideStack = true;
|
|
19
20
|
}
|
|
20
|
-
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = UnsupportedWebAssemblyFeatureError;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const formatLocation = require("../formatLocation");
|
|
8
|
+
const formatLocation = require("../util/formatLocation");
|
|
9
9
|
const UnsupportedWebAssemblyFeatureError = require("./UnsupportedWebAssemblyFeatureError");
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("../Compiler")} Compiler */
|
|
@@ -17,7 +17,7 @@ const PLUGIN_NAME = "WasmFinalizeExportsPlugin";
|
|
|
17
17
|
|
|
18
18
|
class WasmFinalizeExportsPlugin {
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
21
21
|
* @param {Compiler} compiler the compiler instance
|
|
22
22
|
* @returns {void}
|
|
23
23
|
*/
|
|
@@ -17,11 +17,13 @@ const WebAssemblyUtils = require("./WebAssemblyUtils");
|
|
|
17
17
|
|
|
18
18
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
19
19
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
20
|
+
/** @typedef {import("../Generator").UpdateHashContext} UpdateHashContext */
|
|
20
21
|
/** @typedef {import("../Module")} Module */
|
|
21
22
|
/** @typedef {import("../Module").SourceType} SourceType */
|
|
22
23
|
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
23
24
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
24
25
|
/** @typedef {import("../NormalModule")} NormalModule */
|
|
26
|
+
/** @typedef {import("../util/Hash")} Hash */
|
|
25
27
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
26
28
|
/** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
|
|
27
29
|
/** @typedef {import("@webassemblyjs/ast").Instruction} Instruction */
|
|
@@ -31,15 +33,18 @@ const WebAssemblyUtils = require("./WebAssemblyUtils");
|
|
|
31
33
|
/** @typedef {import("@webassemblyjs/ast").AST} AST */
|
|
32
34
|
/** @typedef {import("@webassemblyjs/ast").GlobalType} GlobalType */
|
|
33
35
|
/**
|
|
36
|
+
* Defines the node path type used by this module.
|
|
34
37
|
* @template T
|
|
35
38
|
* @typedef {import("@webassemblyjs/ast").NodePath<T>} NodePath
|
|
36
39
|
*/
|
|
37
40
|
|
|
38
41
|
/**
|
|
42
|
+
* Defines the array buffer transform type used by this module.
|
|
39
43
|
* @typedef {(buf: ArrayBuffer) => ArrayBuffer} ArrayBufferTransform
|
|
40
44
|
*/
|
|
41
45
|
|
|
42
46
|
/**
|
|
47
|
+
* Returns composed transform.
|
|
43
48
|
* @template T
|
|
44
49
|
* @param {((prev: ArrayBuffer) => ArrayBuffer)[]} fns transforms
|
|
45
50
|
* @returns {(buf: ArrayBuffer) => ArrayBuffer} composed transform
|
|
@@ -51,7 +56,7 @@ const compose = (...fns) =>
|
|
|
51
56
|
);
|
|
52
57
|
|
|
53
58
|
/**
|
|
54
|
-
* Removes
|
|
59
|
+
* Removes start func.
|
|
55
60
|
* @param {object} state state
|
|
56
61
|
* @param {AST} state.ast Module's ast
|
|
57
62
|
* @returns {ArrayBufferTransform} transform
|
|
@@ -200,6 +205,7 @@ const rewriteImportedGlobals = (state) => (bin) => {
|
|
|
200
205
|
// in order to preserve non-imported global's order we need to re-inject
|
|
201
206
|
// those as well
|
|
202
207
|
/**
|
|
208
|
+
* Processes the provided path.
|
|
203
209
|
* @param {NodePath<Global>} path path
|
|
204
210
|
*/
|
|
205
211
|
Global(path) {
|
|
@@ -252,6 +258,7 @@ const rewriteExportNames =
|
|
|
252
258
|
(bin) =>
|
|
253
259
|
editWithAST(ast, bin, {
|
|
254
260
|
/**
|
|
261
|
+
* Processes the provided path.
|
|
255
262
|
* @param {NodePath<ModuleExport>} path path
|
|
256
263
|
*/
|
|
257
264
|
ModuleExport(path) {
|
|
@@ -285,6 +292,7 @@ const rewriteImports =
|
|
|
285
292
|
(bin) =>
|
|
286
293
|
editWithAST(ast, bin, {
|
|
287
294
|
/**
|
|
295
|
+
* Processes the provided path.
|
|
288
296
|
* @param {NodePath<ModuleImport>} path path
|
|
289
297
|
*/
|
|
290
298
|
ModuleImport(path) {
|
|
@@ -406,12 +414,14 @@ const getUsedDependencyMap = (moduleGraph, module, mangle) => {
|
|
|
406
414
|
};
|
|
407
415
|
|
|
408
416
|
/**
|
|
417
|
+
* Represents the web assembly generator runtime component.
|
|
409
418
|
* @typedef {object} WebAssemblyGeneratorOptions
|
|
410
419
|
* @property {boolean=} mangleImports mangle imports
|
|
411
420
|
*/
|
|
412
421
|
|
|
413
422
|
class WebAssemblyGenerator extends Generator {
|
|
414
423
|
/**
|
|
424
|
+
* Creates an instance of WebAssemblyGenerator.
|
|
415
425
|
* @param {WebAssemblyGeneratorOptions} options options
|
|
416
426
|
*/
|
|
417
427
|
constructor(options) {
|
|
@@ -420,6 +430,7 @@ class WebAssemblyGenerator extends Generator {
|
|
|
420
430
|
}
|
|
421
431
|
|
|
422
432
|
/**
|
|
433
|
+
* Returns the source types available for this module.
|
|
423
434
|
* @param {NormalModule} module fresh module
|
|
424
435
|
* @returns {SourceTypes} available types (do not mutate)
|
|
425
436
|
*/
|
|
@@ -428,6 +439,7 @@ class WebAssemblyGenerator extends Generator {
|
|
|
428
439
|
}
|
|
429
440
|
|
|
430
441
|
/**
|
|
442
|
+
* Returns the estimated size for the requested source type.
|
|
431
443
|
* @param {NormalModule} module the module
|
|
432
444
|
* @param {SourceType=} type source type
|
|
433
445
|
* @returns {number} estimate size of the module
|
|
@@ -441,6 +453,7 @@ class WebAssemblyGenerator extends Generator {
|
|
|
441
453
|
}
|
|
442
454
|
|
|
443
455
|
/**
|
|
456
|
+
* Generates generated code for this runtime module.
|
|
444
457
|
* @param {NormalModule} module module for which the code should be generated
|
|
445
458
|
* @param {GenerateContext} generateContext context for generate
|
|
446
459
|
* @returns {Source | null} generated code
|
|
@@ -522,6 +535,7 @@ class WebAssemblyGenerator extends Generator {
|
|
|
522
535
|
}
|
|
523
536
|
|
|
524
537
|
/**
|
|
538
|
+
* Generates fallback output for the provided error condition.
|
|
525
539
|
* @param {Error} error the error
|
|
526
540
|
* @param {NormalModule} module module for which the code should be generated
|
|
527
541
|
* @param {GenerateContext} generateContext context for generate
|
|
@@ -530,6 +544,17 @@ class WebAssemblyGenerator extends Generator {
|
|
|
530
544
|
generateError(error, module, generateContext) {
|
|
531
545
|
return new RawSource(error.message);
|
|
532
546
|
}
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Updates the hash with the data contributed by this instance.
|
|
550
|
+
* @param {Hash} hash hash that will be modified
|
|
551
|
+
* @param {UpdateHashContext} updateHashContext context for updating hash
|
|
552
|
+
*/
|
|
553
|
+
updateHash(hash, updateHashContext) {
|
|
554
|
+
if (this.options.mangleImports) {
|
|
555
|
+
hash.update("mangle-imports");
|
|
556
|
+
}
|
|
557
|
+
}
|
|
533
558
|
}
|
|
534
559
|
|
|
535
560
|
module.exports = WebAssemblyGenerator;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const WebpackError = require("../WebpackError");
|
|
7
|
+
const WebpackError = require("../errors/WebpackError");
|
|
8
8
|
|
|
9
9
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
10
10
|
/** @typedef {import("../Module")} Module */
|
|
@@ -12,6 +12,7 @@ const WebpackError = require("../WebpackError");
|
|
|
12
12
|
/** @typedef {import("../RequestShortener")} RequestShortener */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
+
* Gets initial module chains.
|
|
15
16
|
* @param {Module} module module to get chains from
|
|
16
17
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
17
18
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
@@ -82,8 +83,9 @@ const getInitialModuleChains = (
|
|
|
82
83
|
return [...results];
|
|
83
84
|
};
|
|
84
85
|
|
|
85
|
-
|
|
86
|
+
class WebAssemblyInInitialChunkError extends WebpackError {
|
|
86
87
|
/**
|
|
88
|
+
* Creates an instance of WebAssemblyInInitialChunkError.
|
|
87
89
|
* @param {Module} module WASM module
|
|
88
90
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
89
91
|
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
@@ -108,4 +110,6 @@ ${moduleChains.map((s) => `* ${s}`).join("\n")}`;
|
|
|
108
110
|
this.hideStack = true;
|
|
109
111
|
this.module = module;
|
|
110
112
|
}
|
|
111
|
-
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
module.exports = WebAssemblyInInitialChunkError;
|
|
@@ -25,6 +25,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
25
25
|
|
|
26
26
|
class WebAssemblyJavascriptGenerator extends Generator {
|
|
27
27
|
/**
|
|
28
|
+
* Returns the source types available for this module.
|
|
28
29
|
* @param {NormalModule} module fresh module
|
|
29
30
|
* @returns {SourceTypes} available types (do not mutate)
|
|
30
31
|
*/
|
|
@@ -33,6 +34,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
/**
|
|
37
|
+
* Returns the estimated size for the requested source type.
|
|
36
38
|
* @param {NormalModule} module the module
|
|
37
39
|
* @param {SourceType=} type source type
|
|
38
40
|
* @returns {number} estimate size of the module
|
|
@@ -42,6 +44,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
/**
|
|
47
|
+
* Generates generated code for this runtime module.
|
|
45
48
|
* @param {NormalModule} module module for which the code should be generated
|
|
46
49
|
* @param {GenerateContext} generateContext context for generate
|
|
47
50
|
* @returns {Source | null} generated code
|
|
@@ -223,6 +226,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
223
226
|
}
|
|
224
227
|
|
|
225
228
|
/**
|
|
229
|
+
* Generates fallback output for the provided error condition.
|
|
226
230
|
* @param {Error} error the error
|
|
227
231
|
* @param {NormalModule} module module for which the code should be generated
|
|
228
232
|
* @param {GenerateContext} generateContext context for generate
|
|
@@ -31,12 +31,19 @@ const getWebAssemblyParser = memoize(() => require("./WebAssemblyParser"));
|
|
|
31
31
|
const PLUGIN_NAME = "WebAssemblyModulesPlugin";
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
|
+
* Options that influence how synchronous WebAssembly modules are transformed
|
|
35
|
+
* and emitted.
|
|
34
36
|
* @typedef {object} WebAssemblyModulesPluginOptions
|
|
35
37
|
* @property {boolean=} mangleImports mangle imports
|
|
36
38
|
*/
|
|
37
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Adds parser, generator, manifest, and validation support for synchronous
|
|
42
|
+
* WebAssembly modules in the compilation pipeline.
|
|
43
|
+
*/
|
|
38
44
|
class WebAssemblyModulesPlugin {
|
|
39
45
|
/**
|
|
46
|
+
* Stores options that affect generated synchronous WebAssembly output.
|
|
40
47
|
* @param {WebAssemblyModulesPluginOptions} options options
|
|
41
48
|
*/
|
|
42
49
|
constructor(options) {
|
|
@@ -44,7 +51,9 @@ class WebAssemblyModulesPlugin {
|
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
/**
|
|
47
|
-
*
|
|
54
|
+
* Registers compilation hooks that parse and generate sync WebAssembly
|
|
55
|
+
* modules, emit their binary assets, and report invalid placement in initial
|
|
56
|
+
* chunks.
|
|
48
57
|
* @param {Compiler} compiler the compiler instance
|
|
49
58
|
* @returns {void}
|
|
50
59
|
*/
|
|
@@ -22,6 +22,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
22
22
|
const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
|
+
* Gets js incompatible type.
|
|
25
26
|
* @param {t.Signature} signature the func signature
|
|
26
27
|
* @returns {null | string} the type incompatible with js types
|
|
27
28
|
*/
|
|
@@ -64,6 +65,7 @@ const decoderOpts = {
|
|
|
64
65
|
|
|
65
66
|
class WebAssemblyParser extends Parser {
|
|
66
67
|
/**
|
|
68
|
+
* Parses the provided source and updates the parser state.
|
|
67
69
|
* @param {string | Buffer | PreparsedAst} source the source to parse
|
|
68
70
|
* @param {ParserState} state the parser state
|
|
69
71
|
* @returns {ParserState} the parser state
|
|
@@ -12,6 +12,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
12
12
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
+
* Defines the used wasm dependency type used by this module.
|
|
15
16
|
* @typedef {object} UsedWasmDependency
|
|
16
17
|
* @property {WebAssemblyImportDependency} dependency the dependency
|
|
17
18
|
* @property {string} name the export name
|
|
@@ -21,6 +22,7 @@ const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDe
|
|
|
21
22
|
const MANGLED_MODULE = "a";
|
|
22
23
|
|
|
23
24
|
/**
|
|
25
|
+
* Gets used dependencies.
|
|
24
26
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
25
27
|
* @param {Module} module the module
|
|
26
28
|
* @param {boolean | undefined} mangle mangle module and export names
|
|
@@ -15,9 +15,14 @@ const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRun
|
|
|
15
15
|
|
|
16
16
|
const PLUGIN_NAME = "FetchCompileAsyncWasmPlugin";
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Enables asynchronous WebAssembly loading through `fetch` for environments
|
|
20
|
+
* that can instantiate fetched binaries at runtime.
|
|
21
|
+
*/
|
|
18
22
|
class FetchCompileAsyncWasmPlugin {
|
|
19
23
|
/**
|
|
20
|
-
*
|
|
24
|
+
* Registers compilation hooks that attach the async fetch-based wasm runtime
|
|
25
|
+
* to chunks containing async WebAssembly modules.
|
|
21
26
|
* @param {Compiler} compiler the compiler instance
|
|
22
27
|
* @returns {void}
|
|
23
28
|
*/
|
|
@@ -25,6 +30,8 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
25
30
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
26
31
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
|
27
32
|
/**
|
|
33
|
+
* Determines whether the chunk should load async WebAssembly binaries
|
|
34
|
+
* through the `fetch` backend.
|
|
28
35
|
* @param {Chunk} chunk chunk
|
|
29
36
|
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
|
30
37
|
*/
|
|
@@ -37,6 +44,8 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
37
44
|
return wasmLoading === "fetch";
|
|
38
45
|
};
|
|
39
46
|
/**
|
|
47
|
+
* Generates the runtime expression that downloads the emitted wasm
|
|
48
|
+
* binary for an async WebAssembly module.
|
|
40
49
|
* @param {string} path path to the wasm file
|
|
41
50
|
* @returns {string} code to load the wasm file
|
|
42
51
|
*/
|