webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
|
@@ -7,29 +7,29 @@
|
|
|
7
7
|
|
|
8
8
|
const t = require("@webassemblyjs/ast");
|
|
9
9
|
const { moduleContextFromModuleAST } = require("@webassemblyjs/ast");
|
|
10
|
-
const {
|
|
10
|
+
const { addWithAST, editWithAST } = require("@webassemblyjs/wasm-edit");
|
|
11
11
|
const { decode } = require("@webassemblyjs/wasm-parser");
|
|
12
12
|
const { RawSource } = require("webpack-sources");
|
|
13
13
|
const Generator = require("../Generator");
|
|
14
|
-
const { WEBASSEMBLY_TYPES } = require("../
|
|
15
|
-
const WebAssemblyUtils = require("./WebAssemblyUtils");
|
|
16
|
-
|
|
14
|
+
const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
|
|
17
15
|
const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
|
|
16
|
+
const WebAssemblyUtils = require("./WebAssemblyUtils");
|
|
18
17
|
|
|
19
18
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
20
|
-
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
|
|
21
19
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
22
20
|
/** @typedef {import("../Module")} Module */
|
|
21
|
+
/** @typedef {import("../Module").SourceType} SourceType */
|
|
23
22
|
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
24
23
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
25
24
|
/** @typedef {import("../NormalModule")} NormalModule */
|
|
26
|
-
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
27
25
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
28
26
|
/** @typedef {import("./WebAssemblyUtils").UsedWasmDependency} UsedWasmDependency */
|
|
29
27
|
/** @typedef {import("@webassemblyjs/ast").Instruction} Instruction */
|
|
30
28
|
/** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
|
|
31
29
|
/** @typedef {import("@webassemblyjs/ast").ModuleExport} ModuleExport */
|
|
32
30
|
/** @typedef {import("@webassemblyjs/ast").Global} Global */
|
|
31
|
+
/** @typedef {import("@webassemblyjs/ast").AST} AST */
|
|
32
|
+
/** @typedef {import("@webassemblyjs/ast").GlobalType} GlobalType */
|
|
33
33
|
/**
|
|
34
34
|
* @template T
|
|
35
35
|
* @typedef {import("@webassemblyjs/ast").NodePath<T>} NodePath
|
|
@@ -42,21 +42,21 @@ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssembly
|
|
|
42
42
|
/**
|
|
43
43
|
* @template T
|
|
44
44
|
* @param {((prev: ArrayBuffer) => ArrayBuffer)[]} fns transforms
|
|
45
|
-
* @returns {
|
|
45
|
+
* @returns {(buf: ArrayBuffer) => ArrayBuffer} composed transform
|
|
46
46
|
*/
|
|
47
47
|
const compose = (...fns) =>
|
|
48
48
|
fns.reduce(
|
|
49
|
-
(prevFn, nextFn) => value => nextFn(prevFn(value)),
|
|
50
|
-
value => value
|
|
49
|
+
(prevFn, nextFn) => (value) => nextFn(prevFn(value)),
|
|
50
|
+
(value) => value
|
|
51
51
|
);
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
54
|
* Removes the start instruction
|
|
55
55
|
* @param {object} state state
|
|
56
|
-
* @param {
|
|
56
|
+
* @param {AST} state.ast Module's ast
|
|
57
57
|
* @returns {ArrayBufferTransform} transform
|
|
58
58
|
*/
|
|
59
|
-
const removeStartFunc = state => bin =>
|
|
59
|
+
const removeStartFunc = (state) => (bin) =>
|
|
60
60
|
editWithAST(state.ast, bin, {
|
|
61
61
|
Start(path) {
|
|
62
62
|
path.remove();
|
|
@@ -65,10 +65,10 @@ const removeStartFunc = state => bin =>
|
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* Get imported globals
|
|
68
|
-
* @param {
|
|
68
|
+
* @param {AST} ast Module's AST
|
|
69
69
|
* @returns {t.ModuleImport[]} - nodes
|
|
70
70
|
*/
|
|
71
|
-
const getImportedGlobals = ast => {
|
|
71
|
+
const getImportedGlobals = (ast) => {
|
|
72
72
|
/** @type {t.ModuleImport[]} */
|
|
73
73
|
const importedGlobals = [];
|
|
74
74
|
|
|
@@ -85,10 +85,10 @@ const getImportedGlobals = ast => {
|
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
87
|
* Get the count for imported func
|
|
88
|
-
* @param {
|
|
88
|
+
* @param {AST} ast Module's AST
|
|
89
89
|
* @returns {number} - count
|
|
90
90
|
*/
|
|
91
|
-
const getCountImportedFunc = ast => {
|
|
91
|
+
const getCountImportedFunc = (ast) => {
|
|
92
92
|
let count = 0;
|
|
93
93
|
|
|
94
94
|
t.traverse(ast, {
|
|
@@ -104,10 +104,10 @@ const getCountImportedFunc = ast => {
|
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
106
|
* Get next type index
|
|
107
|
-
* @param {
|
|
107
|
+
* @param {AST} ast Module's AST
|
|
108
108
|
* @returns {t.Index} - index
|
|
109
109
|
*/
|
|
110
|
-
const getNextTypeIndex = ast => {
|
|
110
|
+
const getNextTypeIndex = (ast) => {
|
|
111
111
|
const typeSectionMetadata = t.getSectionMetadata(ast, "type");
|
|
112
112
|
|
|
113
113
|
if (typeSectionMetadata === undefined) {
|
|
@@ -122,7 +122,7 @@ const getNextTypeIndex = ast => {
|
|
|
122
122
|
* The Func section metadata provide information for implemented funcs
|
|
123
123
|
* in order to have the correct index we shift the index by number of external
|
|
124
124
|
* functions.
|
|
125
|
-
* @param {
|
|
125
|
+
* @param {AST} ast Module's AST
|
|
126
126
|
* @param {number} countImportedFunc number of imported funcs
|
|
127
127
|
* @returns {t.Index} - index
|
|
128
128
|
*/
|
|
@@ -143,7 +143,7 @@ const getNextFuncIndex = (ast, countImportedFunc) => {
|
|
|
143
143
|
* @param {t.GlobalType} globalType the global type
|
|
144
144
|
* @returns {t.Instruction} init expression
|
|
145
145
|
*/
|
|
146
|
-
const createDefaultInitForGlobal = globalType => {
|
|
146
|
+
const createDefaultInitForGlobal = (globalType) => {
|
|
147
147
|
if (globalType.valtype[0] === "i") {
|
|
148
148
|
// create NumberLiteral global initializer
|
|
149
149
|
return t.objectInstruction("const", globalType.valtype, [
|
|
@@ -168,19 +168,21 @@ const createDefaultInitForGlobal = globalType => {
|
|
|
168
168
|
*
|
|
169
169
|
* Note that globals will become mutable.
|
|
170
170
|
* @param {object} state transformation state
|
|
171
|
-
* @param {
|
|
171
|
+
* @param {AST} state.ast Module's ast
|
|
172
172
|
* @param {t.Instruction[]} state.additionalInitCode list of addition instructions for the init function
|
|
173
173
|
* @returns {ArrayBufferTransform} transform
|
|
174
174
|
*/
|
|
175
|
-
const rewriteImportedGlobals = state => bin => {
|
|
175
|
+
const rewriteImportedGlobals = (state) => (bin) => {
|
|
176
176
|
const additionalInitCode = state.additionalInitCode;
|
|
177
|
-
/** @type {
|
|
177
|
+
/** @type {t.Global[]} */
|
|
178
178
|
const newGlobals = [];
|
|
179
179
|
|
|
180
180
|
bin = editWithAST(state.ast, bin, {
|
|
181
181
|
ModuleImport(path) {
|
|
182
182
|
if (t.isGlobalType(path.node.descr)) {
|
|
183
|
-
const globalType =
|
|
183
|
+
const globalType =
|
|
184
|
+
/** @type {GlobalType} */
|
|
185
|
+
(path.node.descr);
|
|
184
186
|
|
|
185
187
|
globalType.mutability = "var";
|
|
186
188
|
|
|
@@ -238,7 +240,7 @@ const rewriteImportedGlobals = state => bin => {
|
|
|
238
240
|
/**
|
|
239
241
|
* Rewrite the export names
|
|
240
242
|
* @param {object} state state
|
|
241
|
-
* @param {
|
|
243
|
+
* @param {AST} state.ast Module's ast
|
|
242
244
|
* @param {Module} state.module Module
|
|
243
245
|
* @param {ModuleGraph} state.moduleGraph module graph
|
|
244
246
|
* @param {Set<string>} state.externalExports Module
|
|
@@ -247,7 +249,7 @@ const rewriteImportedGlobals = state => bin => {
|
|
|
247
249
|
*/
|
|
248
250
|
const rewriteExportNames =
|
|
249
251
|
({ ast, moduleGraph, module, externalExports, runtime }) =>
|
|
250
|
-
bin =>
|
|
252
|
+
(bin) =>
|
|
251
253
|
editWithAST(ast, bin, {
|
|
252
254
|
/**
|
|
253
255
|
* @param {NodePath<ModuleExport>} path path
|
|
@@ -269,16 +271,18 @@ const rewriteExportNames =
|
|
|
269
271
|
}
|
|
270
272
|
});
|
|
271
273
|
|
|
274
|
+
/** @typedef {Map<string, UsedWasmDependency>} Mapping */
|
|
275
|
+
|
|
272
276
|
/**
|
|
273
277
|
* Mangle import names and modules
|
|
274
278
|
* @param {object} state state
|
|
275
|
-
* @param {
|
|
276
|
-
* @param {
|
|
279
|
+
* @param {AST} state.ast Module's ast
|
|
280
|
+
* @param {Mapping} state.usedDependencyMap mappings to mangle names
|
|
277
281
|
* @returns {ArrayBufferTransform} transform
|
|
278
282
|
*/
|
|
279
283
|
const rewriteImports =
|
|
280
284
|
({ ast, usedDependencyMap }) =>
|
|
281
|
-
bin =>
|
|
285
|
+
(bin) =>
|
|
282
286
|
editWithAST(ast, bin, {
|
|
283
287
|
/**
|
|
284
288
|
* @param {NodePath<ModuleImport>} path path
|
|
@@ -300,7 +304,7 @@ const rewriteImports =
|
|
|
300
304
|
*
|
|
301
305
|
* The init function fills the globals given input arguments.
|
|
302
306
|
* @param {object} state transformation state
|
|
303
|
-
* @param {
|
|
307
|
+
* @param {AST} state.ast Module's ast
|
|
304
308
|
* @param {t.Identifier} state.initFuncId identifier of the init function
|
|
305
309
|
* @param {t.Index} state.startAtFuncOffset index of the start function
|
|
306
310
|
* @param {t.ModuleImport[]} state.importedGlobals list of imported globals
|
|
@@ -319,8 +323,8 @@ const addInitFunction =
|
|
|
319
323
|
nextFuncIndex,
|
|
320
324
|
nextTypeIndex
|
|
321
325
|
}) =>
|
|
322
|
-
bin => {
|
|
323
|
-
const funcParams = importedGlobals.map(importedGlobal => {
|
|
326
|
+
(bin) => {
|
|
327
|
+
const funcParams = importedGlobals.map((importedGlobal) => {
|
|
324
328
|
// used for debugging
|
|
325
329
|
const id = t.identifier(
|
|
326
330
|
`${importedGlobal.module}.${importedGlobal.name}`
|
|
@@ -382,11 +386,11 @@ const addInitFunction =
|
|
|
382
386
|
* Extract mangle mappings from module
|
|
383
387
|
* @param {ModuleGraph} moduleGraph module graph
|
|
384
388
|
* @param {Module} module current module
|
|
385
|
-
* @param {boolean
|
|
386
|
-
* @returns {
|
|
389
|
+
* @param {boolean=} mangle mangle imports
|
|
390
|
+
* @returns {Mapping} mappings to mangled names
|
|
387
391
|
*/
|
|
388
392
|
const getUsedDependencyMap = (moduleGraph, module, mangle) => {
|
|
389
|
-
/** @type {
|
|
393
|
+
/** @type {Mapping} */
|
|
390
394
|
const map = new Map();
|
|
391
395
|
for (const usedDep of WebAssemblyUtils.getUsedDependencies(
|
|
392
396
|
moduleGraph,
|
|
@@ -403,7 +407,7 @@ const getUsedDependencyMap = (moduleGraph, module, mangle) => {
|
|
|
403
407
|
|
|
404
408
|
/**
|
|
405
409
|
* @typedef {object} WebAssemblyGeneratorOptions
|
|
406
|
-
* @property {boolean}
|
|
410
|
+
* @property {boolean=} mangleImports mangle imports
|
|
407
411
|
*/
|
|
408
412
|
|
|
409
413
|
class WebAssemblyGenerator extends Generator {
|
|
@@ -425,7 +429,7 @@ class WebAssemblyGenerator extends Generator {
|
|
|
425
429
|
|
|
426
430
|
/**
|
|
427
431
|
* @param {NormalModule} module the module
|
|
428
|
-
* @param {
|
|
432
|
+
* @param {SourceType=} type source type
|
|
429
433
|
* @returns {number} estimate size of the module
|
|
430
434
|
*/
|
|
431
435
|
getSize(module, type) {
|
|
@@ -442,7 +446,9 @@ class WebAssemblyGenerator extends Generator {
|
|
|
442
446
|
* @returns {Source | null} generated code
|
|
443
447
|
*/
|
|
444
448
|
generate(module, { moduleGraph, runtime }) {
|
|
445
|
-
const bin =
|
|
449
|
+
const bin =
|
|
450
|
+
/** @type {Buffer} */
|
|
451
|
+
(/** @type {Source} */ (module.originalSource()).source());
|
|
446
452
|
|
|
447
453
|
const initFuncId = t.identifier("");
|
|
448
454
|
|
|
@@ -468,8 +474,8 @@ class WebAssemblyGenerator extends Generator {
|
|
|
468
474
|
);
|
|
469
475
|
const externalExports = new Set(
|
|
470
476
|
module.dependencies
|
|
471
|
-
.filter(d => d instanceof WebAssemblyExportImportedDependency)
|
|
472
|
-
.map(d => {
|
|
477
|
+
.filter((d) => d instanceof WebAssemblyExportImportedDependency)
|
|
478
|
+
.map((d) => {
|
|
473
479
|
const wasmDep = /** @type {WebAssemblyExportImportedDependency} */ (
|
|
474
480
|
d
|
|
475
481
|
);
|
|
@@ -509,12 +515,21 @@ class WebAssemblyGenerator extends Generator {
|
|
|
509
515
|
})
|
|
510
516
|
);
|
|
511
517
|
|
|
512
|
-
const newBin = transform(bin);
|
|
513
|
-
|
|
518
|
+
const newBin = transform(/** @type {ArrayBuffer} */ (bin.buffer));
|
|
514
519
|
const newBuf = Buffer.from(newBin);
|
|
515
520
|
|
|
516
521
|
return new RawSource(newBuf);
|
|
517
522
|
}
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* @param {Error} error the error
|
|
526
|
+
* @param {NormalModule} module module for which the code should be generated
|
|
527
|
+
* @param {GenerateContext} generateContext context for generate
|
|
528
|
+
* @returns {Source | null} generated code
|
|
529
|
+
*/
|
|
530
|
+
generateError(error, module, generateContext) {
|
|
531
|
+
return new RawSource(error.message);
|
|
532
|
+
}
|
|
518
533
|
}
|
|
519
534
|
|
|
520
535
|
module.exports = WebAssemblyGenerator;
|
|
@@ -42,8 +42,11 @@ const getInitialModuleChains = (
|
|
|
42
42
|
for (const connection of moduleGraph.getIncomingConnections(head)) {
|
|
43
43
|
const newHead = connection.originModule;
|
|
44
44
|
if (newHead) {
|
|
45
|
-
if (
|
|
45
|
+
if (
|
|
46
|
+
!chunkGraph.getModuleChunks(newHead).some((c) => c.canBeInitial())
|
|
47
|
+
) {
|
|
46
48
|
continue;
|
|
49
|
+
}
|
|
47
50
|
final = false;
|
|
48
51
|
if (alreadyReferencedModules.has(newHead)) continue;
|
|
49
52
|
alreadyReferencedModules.add(newHead);
|
|
@@ -76,7 +79,7 @@ const getInitialModuleChains = (
|
|
|
76
79
|
for (const result of incompleteResults) {
|
|
77
80
|
results.add(result);
|
|
78
81
|
}
|
|
79
|
-
return
|
|
82
|
+
return [...results];
|
|
80
83
|
};
|
|
81
84
|
|
|
82
85
|
module.exports = class WebAssemblyInInitialChunkError extends WebpackError {
|
|
@@ -96,7 +99,7 @@ module.exports = class WebAssemblyInInitialChunkError extends WebpackError {
|
|
|
96
99
|
const message = `WebAssembly module is included in initial chunk.
|
|
97
100
|
This is not allowed, because WebAssembly download and compilation must happen asynchronous.
|
|
98
101
|
Add an async split point (i. e. import()) somewhere between your entrypoint and the WebAssembly module:
|
|
99
|
-
${moduleChains.map(s => `* ${s}`).join("\n")}`;
|
|
102
|
+
${moduleChains.map((s) => `* ${s}`).join("\n")}`;
|
|
100
103
|
|
|
101
104
|
super(message);
|
|
102
105
|
this.name = "WebAssemblyInInitialChunkError";
|
|
@@ -9,7 +9,7 @@ const { RawSource } = require("webpack-sources");
|
|
|
9
9
|
const { UsageState } = require("../ExportsInfo");
|
|
10
10
|
const Generator = require("../Generator");
|
|
11
11
|
const InitFragment = require("../InitFragment");
|
|
12
|
-
const { WEBASSEMBLY_TYPES } = require("../
|
|
12
|
+
const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
|
|
13
13
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
14
14
|
const Template = require("../Template");
|
|
15
15
|
const ModuleDependency = require("../dependencies/ModuleDependency");
|
|
@@ -17,13 +17,11 @@ const WebAssemblyExportImportedDependency = require("../dependencies/WebAssembly
|
|
|
17
17
|
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
|
|
18
18
|
|
|
19
19
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
20
|
-
/** @typedef {import("../Dependency")} Dependency */
|
|
21
|
-
/** @typedef {import("../DependencyTemplates")} DependencyTemplates */
|
|
22
20
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
23
21
|
/** @typedef {import("../Module")} Module */
|
|
22
|
+
/** @typedef {import("../Module").SourceType} SourceType */
|
|
24
23
|
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
25
24
|
/** @typedef {import("../NormalModule")} NormalModule */
|
|
26
|
-
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
27
25
|
|
|
28
26
|
class WebAssemblyJavascriptGenerator extends Generator {
|
|
29
27
|
/**
|
|
@@ -36,7 +34,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
36
34
|
|
|
37
35
|
/**
|
|
38
36
|
* @param {NormalModule} module the module
|
|
39
|
-
* @param {
|
|
37
|
+
* @param {SourceType=} type source type
|
|
40
38
|
* @returns {number} estimate size of the module
|
|
41
39
|
*/
|
|
42
40
|
getSize(module, type) {
|
|
@@ -56,7 +54,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
56
54
|
runtimeRequirements,
|
|
57
55
|
runtime
|
|
58
56
|
} = generateContext;
|
|
59
|
-
/** @type {InitFragment<
|
|
57
|
+
/** @type {InitFragment<GenerateContext>[]} */
|
|
60
58
|
const initFragments = [];
|
|
61
59
|
|
|
62
60
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
|
@@ -74,6 +72,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
74
72
|
importedModules.set(
|
|
75
73
|
moduleGraph.getModule(dep),
|
|
76
74
|
(importData = {
|
|
75
|
+
dependency: moduleDep,
|
|
77
76
|
importVar: `m${index}`,
|
|
78
77
|
index,
|
|
79
78
|
request: (moduleDep && moduleDep.userRequest) || undefined,
|
|
@@ -97,6 +96,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
97
96
|
initParams.push(
|
|
98
97
|
runtimeTemplate.exportFromImport({
|
|
99
98
|
moduleGraph,
|
|
99
|
+
chunkGraph,
|
|
100
100
|
module: importedModule,
|
|
101
101
|
request: dep.request,
|
|
102
102
|
importVar: importData.importVar,
|
|
@@ -108,7 +108,8 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
108
108
|
defaultInterop: true,
|
|
109
109
|
initFragments,
|
|
110
110
|
runtime,
|
|
111
|
-
runtimeRequirements
|
|
111
|
+
runtimeRequirements,
|
|
112
|
+
dependency: dep
|
|
112
113
|
})
|
|
113
114
|
);
|
|
114
115
|
}
|
|
@@ -129,6 +130,7 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
129
130
|
`${exportProp} = ${runtimeTemplate.exportFromImport({
|
|
130
131
|
moduleGraph,
|
|
131
132
|
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
|
133
|
+
chunkGraph,
|
|
132
134
|
request: dep.request,
|
|
133
135
|
importVar: importData.importVar,
|
|
134
136
|
originModule: module,
|
|
@@ -139,7 +141,8 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
139
141
|
defaultInterop: true,
|
|
140
142
|
initFragments,
|
|
141
143
|
runtime,
|
|
142
|
-
runtimeRequirements
|
|
144
|
+
runtimeRequirements,
|
|
145
|
+
dependency: dep
|
|
143
146
|
})};`,
|
|
144
147
|
`if(WebAssembly.Global) ${exportProp} = ` +
|
|
145
148
|
`new WebAssembly.Global({ value: ${JSON.stringify(
|
|
@@ -155,14 +158,16 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
155
158
|
const importsCode = Template.asString(
|
|
156
159
|
Array.from(
|
|
157
160
|
importedModules,
|
|
158
|
-
([module, { importVar, request, reexports }]) => {
|
|
161
|
+
([module, { importVar, request, reexports, dependency }]) => {
|
|
159
162
|
const importStatement = runtimeTemplate.importStatement({
|
|
160
163
|
module,
|
|
164
|
+
moduleGraph,
|
|
161
165
|
chunkGraph,
|
|
162
166
|
request,
|
|
163
167
|
importVar,
|
|
164
168
|
originModule: module,
|
|
165
|
-
runtimeRequirements
|
|
169
|
+
runtimeRequirements,
|
|
170
|
+
dependency
|
|
166
171
|
});
|
|
167
172
|
return importStatement[0] + importStatement[1] + reexports.join("\n");
|
|
168
173
|
}
|
|
@@ -212,6 +217,16 @@ class WebAssemblyJavascriptGenerator extends Generator {
|
|
|
212
217
|
);
|
|
213
218
|
return InitFragment.addToSource(source, initFragments, generateContext);
|
|
214
219
|
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* @param {Error} error the error
|
|
223
|
+
* @param {NormalModule} module module for which the code should be generated
|
|
224
|
+
* @param {GenerateContext} generateContext context for generate
|
|
225
|
+
* @returns {Source | null} generated code
|
|
226
|
+
*/
|
|
227
|
+
generateError(error, module, generateContext) {
|
|
228
|
+
return new RawSource(`throw new Error(${JSON.stringify(error.message)});`);
|
|
229
|
+
}
|
|
215
230
|
}
|
|
216
231
|
|
|
217
232
|
module.exports = WebAssemblyJavascriptGenerator;
|
|
@@ -6,19 +6,19 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const Generator = require("../Generator");
|
|
9
|
+
const {
|
|
10
|
+
JAVASCRIPT_TYPE,
|
|
11
|
+
WEBASSEMBLY_TYPE
|
|
12
|
+
} = require("../ModuleSourceTypeConstants");
|
|
9
13
|
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
|
10
14
|
const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
|
|
11
15
|
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
|
|
12
|
-
const {
|
|
16
|
+
const { compareModulesByIdOrIdentifier } = require("../util/comparators");
|
|
13
17
|
const memoize = require("../util/memoize");
|
|
14
18
|
const WebAssemblyInInitialChunkError = require("./WebAssemblyInInitialChunkError");
|
|
15
19
|
|
|
16
|
-
/** @typedef {import("webpack-sources").Source} Source */
|
|
17
|
-
/** @typedef {import("../../declarations/WebpackOptions").OutputNormalized} OutputOptions */
|
|
18
20
|
/** @typedef {import("../Compiler")} Compiler */
|
|
19
21
|
/** @typedef {import("../Module")} Module */
|
|
20
|
-
/** @typedef {import("../ModuleTemplate")} ModuleTemplate */
|
|
21
|
-
/** @typedef {import("../javascript/JavascriptModulesPlugin").RenderContext} RenderContext */
|
|
22
22
|
|
|
23
23
|
const getWebAssemblyGenerator = memoize(() =>
|
|
24
24
|
require("./WebAssemblyGenerator")
|
|
@@ -32,7 +32,7 @@ const PLUGIN_NAME = "WebAssemblyModulesPlugin";
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* @typedef {object} WebAssemblyModulesPluginOptions
|
|
35
|
-
* @property {boolean}
|
|
35
|
+
* @property {boolean=} mangleImports mangle imports
|
|
36
36
|
*/
|
|
37
37
|
|
|
38
38
|
class WebAssemblyModulesPlugin {
|
|
@@ -78,8 +78,8 @@ class WebAssemblyModulesPlugin {
|
|
|
78
78
|
const WebAssemblyGenerator = getWebAssemblyGenerator();
|
|
79
79
|
|
|
80
80
|
return Generator.byType({
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
[JAVASCRIPT_TYPE]: new WebAssemblyJavascriptGenerator(),
|
|
82
|
+
[WEBASSEMBLY_TYPE]: new WebAssemblyGenerator(this.options)
|
|
83
83
|
});
|
|
84
84
|
});
|
|
85
85
|
|
|
@@ -89,12 +89,10 @@ class WebAssemblyModulesPlugin {
|
|
|
89
89
|
|
|
90
90
|
for (const module of chunkGraph.getOrderedChunkModulesIterable(
|
|
91
91
|
chunk,
|
|
92
|
-
|
|
92
|
+
compareModulesByIdOrIdentifier(chunkGraph)
|
|
93
93
|
)) {
|
|
94
94
|
if (module.type === WEBASSEMBLY_MODULE_TYPE_SYNC) {
|
|
95
|
-
const filenameTemplate =
|
|
96
|
-
/** @type {NonNullable<OutputOptions["webassemblyModuleFilename"]>} */
|
|
97
|
-
(outputOptions.webassemblyModuleFilename);
|
|
95
|
+
const filenameTemplate = outputOptions.webassemblyModuleFilename;
|
|
98
96
|
|
|
99
97
|
result.push({
|
|
100
98
|
render: () =>
|
|
@@ -123,6 +121,7 @@ class WebAssemblyModulesPlugin {
|
|
|
123
121
|
|
|
124
122
|
compilation.hooks.afterChunks.tap(PLUGIN_NAME, () => {
|
|
125
123
|
const chunkGraph = compilation.chunkGraph;
|
|
124
|
+
/** @type {Set<Module>} */
|
|
126
125
|
const initialWasmModules = new Set();
|
|
127
126
|
for (const chunk of compilation.chunks) {
|
|
128
127
|
if (chunk.canBeInitial()) {
|
|
@@ -13,7 +13,7 @@ const StaticExportsDependency = require("../dependencies/StaticExportsDependency
|
|
|
13
13
|
const WebAssemblyExportImportedDependency = require("../dependencies/WebAssemblyExportImportedDependency");
|
|
14
14
|
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
|
|
15
15
|
|
|
16
|
-
/** @typedef {import("
|
|
16
|
+
/** @typedef {import("@webassemblyjs/ast").ModuleImport} ModuleImport */
|
|
17
17
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
18
18
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
19
19
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
|
@@ -25,7 +25,7 @@ const JS_COMPAT_TYPES = new Set(["i32", "i64", "f32", "f64", "externref"]);
|
|
|
25
25
|
* @param {t.Signature} signature the func signature
|
|
26
26
|
* @returns {null | string} the type incompatible with js types
|
|
27
27
|
*/
|
|
28
|
-
const getJsIncompatibleType = signature => {
|
|
28
|
+
const getJsIncompatibleType = (signature) => {
|
|
29
29
|
for (const param of signature.params) {
|
|
30
30
|
if (!JS_COMPAT_TYPES.has(param.valtype)) {
|
|
31
31
|
return `${param.valtype} as parameter`;
|
|
@@ -42,7 +42,7 @@ const getJsIncompatibleType = signature => {
|
|
|
42
42
|
* @param {t.FuncSignature} signature the func signature
|
|
43
43
|
* @returns {null | string} the type incompatible with js types
|
|
44
44
|
*/
|
|
45
|
-
const getJsIncompatibleTypeOfFuncSignature = signature => {
|
|
45
|
+
const getJsIncompatibleTypeOfFuncSignature = (signature) => {
|
|
46
46
|
for (const param of signature.args) {
|
|
47
47
|
if (!JS_COMPAT_TYPES.has(param)) {
|
|
48
48
|
return `${param} as parameter`;
|
|
@@ -63,15 +63,6 @@ const decoderOpts = {
|
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
class WebAssemblyParser extends Parser {
|
|
66
|
-
/**
|
|
67
|
-
* @param {{}=} options parser options
|
|
68
|
-
*/
|
|
69
|
-
constructor(options) {
|
|
70
|
-
super();
|
|
71
|
-
this.hooks = Object.freeze({});
|
|
72
|
-
this.options = options;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
66
|
/**
|
|
76
67
|
* @param {string | Buffer | PreparsedAst} source the source to parse
|
|
77
68
|
* @param {ParserState} state the parser state
|
|
@@ -101,8 +92,9 @@ class WebAssemblyParser extends Parser {
|
|
|
101
92
|
/** @type {Record<string, string> | undefined} */
|
|
102
93
|
let jsIncompatibleExports = (buildMeta.jsIncompatibleExports = undefined);
|
|
103
94
|
|
|
104
|
-
/** @type {
|
|
95
|
+
/** @type {(ModuleImport | null)[]} */
|
|
105
96
|
const importedGlobals = [];
|
|
97
|
+
|
|
106
98
|
t.traverse(module, {
|
|
107
99
|
ModuleExport({ node }) {
|
|
108
100
|
const descriptor = node.descr;
|
|
@@ -129,14 +121,14 @@ class WebAssemblyParser extends Parser {
|
|
|
129
121
|
exports.push(node.name);
|
|
130
122
|
|
|
131
123
|
if (node.descr && node.descr.exportType === "Global") {
|
|
132
|
-
const refNode =
|
|
133
|
-
importedGlobals[/** @type {TODO} */ (node.descr.id.value)];
|
|
124
|
+
const refNode = importedGlobals[node.descr.id.value];
|
|
134
125
|
if (refNode) {
|
|
135
126
|
const dep = new WebAssemblyExportImportedDependency(
|
|
136
127
|
node.name,
|
|
137
128
|
refNode.module,
|
|
138
129
|
refNode.name,
|
|
139
|
-
|
|
130
|
+
/** @type {string} */
|
|
131
|
+
(refNode.descr.valtype)
|
|
140
132
|
);
|
|
141
133
|
|
|
142
134
|
state.module.addDependency(dep);
|
|
@@ -170,7 +162,8 @@ class WebAssemblyParser extends Parser {
|
|
|
170
162
|
onlyDirectImport = "Table";
|
|
171
163
|
} else if (t.isFuncImportDescr(node.descr) === true) {
|
|
172
164
|
const incompatibleType = getJsIncompatibleType(
|
|
173
|
-
/** @type {t.Signature} */
|
|
165
|
+
/** @type {t.Signature} */
|
|
166
|
+
(node.descr.signature)
|
|
174
167
|
);
|
|
175
168
|
if (incompatibleType) {
|
|
176
169
|
onlyDirectImport = `Non-JS-compatible Func Signature (${incompatibleType})`;
|
|
@@ -21,13 +21,13 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
21
21
|
* @returns {void}
|
|
22
22
|
*/
|
|
23
23
|
apply(compiler) {
|
|
24
|
-
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
|
|
24
|
+
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
25
25
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
|
26
26
|
/**
|
|
27
27
|
* @param {Chunk} chunk chunk
|
|
28
28
|
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
|
29
29
|
*/
|
|
30
|
-
const isEnabledForChunk = chunk => {
|
|
30
|
+
const isEnabledForChunk = (chunk) => {
|
|
31
31
|
const options = chunk.getEntryOptions();
|
|
32
32
|
const wasmLoading =
|
|
33
33
|
options && options.wasmLoading !== undefined
|
|
@@ -39,7 +39,7 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
39
39
|
* @param {string} path path to the wasm file
|
|
40
40
|
* @returns {string} code to load the wasm file
|
|
41
41
|
*/
|
|
42
|
-
const generateLoadBinaryCode = path =>
|
|
42
|
+
const generateLoadBinaryCode = (path) =>
|
|
43
43
|
`fetch(${RuntimeGlobals.publicPath} + ${path})`;
|
|
44
44
|
|
|
45
45
|
compilation.hooks.runtimeRequirementInTree
|
|
@@ -49,7 +49,7 @@ class FetchCompileAsyncWasmPlugin {
|
|
|
49
49
|
if (
|
|
50
50
|
!chunkGraph.hasModuleInGraph(
|
|
51
51
|
chunk,
|
|
52
|
-
m => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
|
|
52
|
+
(m) => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
|
|
53
53
|
)
|
|
54
54
|
) {
|
|
55
55
|
return;
|
|
@@ -14,16 +14,14 @@ const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRunt
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* @typedef {object} FetchCompileWasmPluginOptions
|
|
17
|
-
* @property {boolean}
|
|
17
|
+
* @property {boolean=} mangleImports mangle imports
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
// TODO webpack 6 remove
|
|
21
|
-
|
|
22
20
|
const PLUGIN_NAME = "FetchCompileWasmPlugin";
|
|
23
21
|
|
|
24
22
|
class FetchCompileWasmPlugin {
|
|
25
23
|
/**
|
|
26
|
-
* @param {FetchCompileWasmPluginOptions}
|
|
24
|
+
* @param {FetchCompileWasmPluginOptions=} options options
|
|
27
25
|
*/
|
|
28
26
|
constructor(options = {}) {
|
|
29
27
|
this.options = options;
|
|
@@ -35,13 +33,13 @@ class FetchCompileWasmPlugin {
|
|
|
35
33
|
* @returns {void}
|
|
36
34
|
*/
|
|
37
35
|
apply(compiler) {
|
|
38
|
-
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
|
|
36
|
+
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
39
37
|
const globalWasmLoading = compilation.outputOptions.wasmLoading;
|
|
40
38
|
/**
|
|
41
39
|
* @param {Chunk} chunk chunk
|
|
42
40
|
* @returns {boolean} true, if wasm loading is enabled for the chunk
|
|
43
41
|
*/
|
|
44
|
-
const isEnabledForChunk = chunk => {
|
|
42
|
+
const isEnabledForChunk = (chunk) => {
|
|
45
43
|
const options = chunk.getEntryOptions();
|
|
46
44
|
const wasmLoading =
|
|
47
45
|
options && options.wasmLoading !== undefined
|
|
@@ -53,7 +51,7 @@ class FetchCompileWasmPlugin {
|
|
|
53
51
|
* @param {string} path path to the wasm file
|
|
54
52
|
* @returns {string} code to load the wasm file
|
|
55
53
|
*/
|
|
56
|
-
const generateLoadBinaryCode = path =>
|
|
54
|
+
const generateLoadBinaryCode = (path) =>
|
|
57
55
|
`fetch(${RuntimeGlobals.publicPath} + ${path})`;
|
|
58
56
|
|
|
59
57
|
compilation.hooks.runtimeRequirementInTree
|
|
@@ -63,7 +61,7 @@ class FetchCompileWasmPlugin {
|
|
|
63
61
|
if (
|
|
64
62
|
!chunkGraph.hasModuleInGraph(
|
|
65
63
|
chunk,
|
|
66
|
-
m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
|
|
64
|
+
(m) => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
|
|
67
65
|
)
|
|
68
66
|
) {
|
|
69
67
|
return;
|