@depup/webpack 5.109.2-depup.0 → 5.110.3-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/changes.json +7 -7
- package/lib/APIPlugin.js +123 -17
- package/lib/AsyncDependenciesBlock.js +10 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +10 -6
- package/lib/CacheFacade.js +6 -6
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +46 -35
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +4 -7
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +7 -7
- package/lib/Compilation.js +688 -409
- package/lib/Compiler.js +53 -38
- package/lib/ConcatenationScope.js +107 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +121 -37
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +91 -26
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +111 -14
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +232 -77
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +44 -70
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +40 -49
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +36 -15
- package/lib/HotModuleReplacementPlugin.js +16 -44
- package/lib/IgnorePlugin.js +8 -4
- package/lib/IgnoreWarningsPlugin.js +2 -2
- package/lib/InitFragment.js +8 -4
- package/lib/JavascriptMetaInfoPlugin.js +35 -4
- package/lib/LazyBarrel.js +3 -4
- package/lib/LibraryTemplatePlugin.js +10 -6
- package/lib/LoaderOptionsPlugin.js +7 -3
- package/lib/LoaderTargetPlugin.js +1 -1
- package/lib/MainTemplate.js +49 -42
- package/lib/ManifestPlugin.js +12 -11
- package/lib/Module.js +62 -33
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +9 -4
- package/lib/ModuleGraph.js +195 -21
- package/lib/ModuleGraphConnection.js +6 -13
- package/lib/ModuleInfoHeaderPlugin.js +8 -10
- package/lib/ModuleTemplate.js +62 -63
- package/lib/MultiCompiler.js +130 -64
- package/lib/MultiStats.js +40 -9
- package/lib/MultiWatching.js +3 -3
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +29 -19
- package/lib/NormalModule.js +152 -103
- package/lib/NormalModuleFactory.js +555 -110
- package/lib/NormalModuleReplacementPlugin.js +5 -8
- package/lib/NullFactory.js +6 -2
- package/lib/OptionsApply.js +7 -3
- package/lib/Parser.js +7 -3
- package/lib/PlatformPlugin.js +2 -2
- package/lib/PrefetchPlugin.js +1 -1
- package/lib/ProgressPlugin.js +16 -13
- package/lib/ProvidePlugin.js +3 -5
- package/lib/RawModule.js +25 -17
- package/lib/RecordIdsPlugin.js +3 -3
- package/lib/RequestShortener.js +1 -1
- package/lib/ResolverFactory.js +2 -2
- package/lib/RuntimeGlobals.js +22 -10
- package/lib/RuntimeModule.js +29 -19
- package/lib/RuntimePlugin.js +335 -169
- package/lib/RuntimeTemplate.js +2761 -316
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +32 -22
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +12 -6
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +30 -23
- package/lib/cache/ResolverCachePlugin.js +38 -18
- package/lib/cache/getLazyHashedEtag.js +1 -2
- package/lib/cache/mergeEtags.js +1 -1
- package/lib/cli.js +1 -3
- package/lib/config/browserslistTargetHandler.js +41 -5
- package/lib/config/defaults.js +270 -78
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +46 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +6 -11
- package/lib/container/ModuleFederationPlugin.js +7 -24
- package/lib/container/RemoteModule.js +27 -19
- package/lib/container/RemoteRuntimeModule.js +10 -8
- package/lib/container/moduleFederationHooks.js +32 -0
- package/lib/css/CssGenerator.js +171 -43
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +84 -32
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +172 -100
- package/lib/css/CssParser.js +1113 -568
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5334 -0
- package/lib/css/syntax.js +9647 -232
- package/lib/debug/ProfilingPlugin.js +14 -9
- package/lib/deno/DenoTargetPlugin.js +1 -1
- package/lib/dependencies/AMDDefineDependency.js +112 -87
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
- package/lib/dependencies/AMDPlugin.js +9 -7
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
- package/lib/dependencies/AMDRequireContextDependency.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
- package/lib/dependencies/AMDRequireDependency.js +8 -7
- package/lib/dependencies/AMDRequireItemDependency.js +1 -1
- package/lib/dependencies/AMDRuntimeModules.js +21 -1
- package/lib/dependencies/BuildTimeConstDependency.js +102 -0
- package/lib/dependencies/CachedConstDependency.js +11 -8
- package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
- package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +170 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
- package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
- package/lib/dependencies/HarmonyExports.js +7 -4
- package/lib/dependencies/HarmonyImportDependency.js +121 -60
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +49 -31
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +45 -5
- package/lib/dependencies/ImportDependency.js +33 -50
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +73 -49
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +50 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
- package/lib/dependencies/WorkerDependency.js +22 -22
- package/lib/dependencies/WorkletDependency.js +18 -21
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
- package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -24
- package/lib/hmr/lazyCompilationBackend.js +9 -6
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +277 -77
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +366 -200
- package/lib/html/HtmlParser.js +31 -86
- package/lib/html/data.js +1928 -0
- package/lib/html/htmlMinify.js +288 -0
- package/lib/html/syntax.js +6034 -1384
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
- package/lib/ids/HashedModuleIdsPlugin.js +6 -2
- package/lib/ids/IdHelpers.js +7 -8
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
- package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
- package/lib/ids/SyncModuleIdsPlugin.js +4 -4
- package/lib/index.js +10 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
- package/lib/javascript/BasicEvaluatedExpression.js +18 -14
- package/lib/javascript/ChunkFormatHelpers.js +6 -6
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
- package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
- package/lib/javascript/JavascriptGenerator.js +65 -165
- package/lib/javascript/JavascriptModule.js +9 -3
- package/lib/javascript/JavascriptModulesPlugin.js +103 -123
- package/lib/javascript/JavascriptParser.js +242 -99
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/ScopeAnalyzer.js +1094 -0
- package/lib/javascript/StartupHelpers.js +55 -9
- package/lib/javascript/syntax.js +2678 -232
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +47 -6
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +1030 -476
- package/lib/optimize/ConstExportsPlugin.js +16 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +130 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
- package/lib/optimize/RealContentHashPlugin.js +121 -41
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
- package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
- package/lib/optimize/RuntimeChunkPlugin.js +2 -2
- package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
- package/lib/optimize/SplitChunksPlugin.js +86 -24
- package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
- package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
- package/lib/performance/BroadContextsPlugin.js +142 -0
- package/lib/performance/CacheEffectivenessPlugin.js +125 -0
- package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
- package/lib/performance/DuplicateModulesPlugin.js +93 -0
- package/lib/performance/DuplicatePackagesPlugin.js +119 -0
- package/lib/performance/DuplicatePackagesWarning.js +84 -0
- package/lib/performance/DynamicExportsPlugin.js +120 -0
- package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
- package/lib/performance/EntrypointOverlapPlugin.js +122 -0
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EvalUsagePlugin.js +115 -0
- package/lib/performance/HotspotsPlugin.js +296 -0
- package/lib/performance/InlinedAssetsPlugin.js +99 -0
- package/lib/performance/LargeModulesPlugin.js +126 -0
- package/lib/performance/LegacyJavascriptPlugin.js +139 -0
- package/lib/performance/MissingSideEffectsPlugin.js +138 -0
- package/lib/performance/MixedExportsPlugin.js +136 -0
- package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
- package/lib/performance/PureAnnotationsPlugin.js +219 -0
- package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
- package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
- package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
- package/lib/performance/SizeLimitsPlugin.js +139 -7
- package/lib/performance/SplitChunksCappedPlugin.js +99 -0
- package/lib/performance/TinyChunksPlugin.js +128 -0
- package/lib/performance/TopLevelThisPlugin.js +208 -0
- package/lib/performance/UnsplitVendorsPlugin.js +112 -0
- package/lib/performance/UnusedAliasesPlugin.js +253 -0
- package/lib/performance/UnusedDefinesPlugin.js +87 -0
- package/lib/performance/UnusedExternalsPlugin.js +110 -0
- package/lib/performance/UnusedReexportsPlugin.js +159 -0
- package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
- package/lib/performance/getModuleSize.js +22 -0
- package/lib/performance/getSourceModules.js +22 -0
- package/lib/performance/hasOnlyUnusedExports.js +40 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ResourceHintPlugin.js +295 -79
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +46 -20
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +22 -9
- package/lib/serialization/ObjectMiddleware.js +139 -114
- package/lib/serialization/PlainObjectSerializer.js +19 -16
- package/lib/sharing/ConsumeSharedModule.js +30 -21
- package/lib/sharing/ConsumeSharedPlugin.js +18 -10
- package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
- package/lib/sharing/ProvideSharedModule.js +25 -16
- package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
- package/lib/sharing/ProvideSharedPlugin.js +8 -4
- package/lib/sharing/SharePlugin.js +17 -5
- package/lib/sharing/ShareRuntimeModule.js +4 -4
- package/lib/sharing/resolveMatchedConfigs.js +9 -6
- package/lib/sharing/utils.js +1 -3
- package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
- package/lib/stats/StatsFactory.js +25 -26
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +20 -24
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1066 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +10 -2
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +4 -0
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +8 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
- package/lib/web/FetchCompileWasmPlugin.js +48 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +32 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +667 -34
- package/schemas/plugins/HtmlParserOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.json +10 -0
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +3223 -465
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
8
|
+
/** @import Hash from "./Hash" */
|
|
9
9
|
|
|
10
10
|
const A_CODE = "a".charCodeAt(0);
|
|
11
11
|
|
|
@@ -47,6 +47,7 @@ const digestNonNumericOnlyWithFull = (hash, hashDigest, hashDigestLength) => {
|
|
|
47
47
|
return [nonNumericOnlyHash(full, hashDigestLength), full];
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
+
nonNumericOnlyHash.digestNonNumericOnly = digestNonNumericOnly;
|
|
51
|
+
nonNumericOnlyHash.digestNonNumericOnlyWithFull = digestNonNumericOnlyWithFull;
|
|
52
|
+
|
|
50
53
|
module.exports = nonNumericOnlyHash;
|
|
51
|
-
module.exports.digestNonNumericOnly = digestNonNumericOnly;
|
|
52
|
-
module.exports.digestNonNumericOnlyWithFull = digestNonNumericOnlyWithFull;
|
package/lib/util/parseJson.js
CHANGED
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const memoize = require("./memoize");
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
const getJSONParseError = memoize(() => require("../errors/JSONParseError"));
|
|
10
|
+
|
|
11
|
+
/** @import { JsonValue } from "../util/fs" */
|
|
10
12
|
|
|
11
13
|
// Inspired by https://github.com/npm/json-parse-even-better-errors
|
|
12
14
|
|
|
@@ -34,7 +36,7 @@ const parseJson = (raw, reviver) => {
|
|
|
34
36
|
try {
|
|
35
37
|
return JSON.parse(txt, reviver);
|
|
36
38
|
} catch (err) {
|
|
37
|
-
throw new
|
|
39
|
+
throw new (getJSONParseError())(/** @type {Error} */ (err), raw, txt);
|
|
38
40
|
}
|
|
39
41
|
};
|
|
40
42
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
/** @import NormalModuleFactory from "../NormalModuleFactory" */
|
|
9
|
+
/** @typedef {import("./lazyModule").LazyModuleAccessor<EXPECTED_ANY>} AnyLazyModuleAccessor */
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Warms the modules a type's `createParser`/`createGenerator`/`createModuleClass`
|
|
13
|
+
* taps read, at the factory's async boundary — those hooks are synchronous, so
|
|
14
|
+
* they cannot await the load themselves.
|
|
15
|
+
* @param {NormalModuleFactory} normalModuleFactory the normal module factory
|
|
16
|
+
* @param {string} pluginName name of the tapping plugin
|
|
17
|
+
* @param {Iterable<[string, AnyLazyModuleAccessor[]]>} table module type to the accessors its taps read
|
|
18
|
+
* @returns {void}
|
|
19
|
+
*/
|
|
20
|
+
const preloadModuleType = (normalModuleFactory, pluginName, table) => {
|
|
21
|
+
for (const [type, accessors] of table) {
|
|
22
|
+
normalModuleFactory.hooks.prepareModuleType
|
|
23
|
+
.for(type)
|
|
24
|
+
.tapPromise(pluginName, () =>
|
|
25
|
+
Promise.all(accessors.map((accessor) => accessor())).then(
|
|
26
|
+
() => undefined
|
|
27
|
+
)
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
module.exports = preloadModuleType;
|
|
@@ -19,11 +19,13 @@ const {
|
|
|
19
19
|
} = require("webpack-sources");
|
|
20
20
|
const { register } = require("./serialization");
|
|
21
21
|
|
|
22
|
-
/** @
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
/** @import { RealDependencyLocation, SourcePosition } from "../Dependency" */
|
|
23
|
+
/**
|
|
24
|
+
* @import {
|
|
25
|
+
* ObjectDeserializerContext,
|
|
26
|
+
* ObjectSerializerContext
|
|
27
|
+
* } from "../serialization/ObjectMiddleware"
|
|
28
|
+
*/
|
|
27
29
|
|
|
28
30
|
const CURRENT_MODULE = "webpack/lib/util/registerExternalSerializer";
|
|
29
31
|
|
package/lib/util/removeBOM.js
CHANGED
|
@@ -5,12 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const { decodeVLQ, encodeVLQ } = require("./createMappings");
|
|
9
|
+
|
|
10
|
+
/** @import { RawSourceMap } from "webpack-sources" */
|
|
11
|
+
/** @import { Result } from "../NormalModule" */
|
|
12
|
+
|
|
8
13
|
/**
|
|
9
14
|
* Returns result without BOM.
|
|
10
15
|
* @param {string | Buffer} strOrBuffer string or buffer
|
|
11
16
|
* @returns {string | Buffer} result without BOM
|
|
12
17
|
*/
|
|
13
|
-
|
|
18
|
+
const removeBOM = (strOrBuffer) => {
|
|
14
19
|
if (typeof strOrBuffer === "string" && strOrBuffer.charCodeAt(0) === 0xfeff) {
|
|
15
20
|
return strOrBuffer.slice(1);
|
|
16
21
|
} else if (
|
|
@@ -24,3 +29,79 @@ module.exports = (strOrBuffer) => {
|
|
|
24
29
|
|
|
25
30
|
return strOrBuffer;
|
|
26
31
|
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A BOM occupies generated column 0 of the first line, so a map describing
|
|
35
|
+
* BOM-prefixed content starts that line at column 1 or later. Removing the BOM
|
|
36
|
+
* moves the line one column left; the segments after the first are encoded
|
|
37
|
+
* relative to it, so only the first is rewritten. A map already starting at
|
|
38
|
+
* column 0 describes the content without its BOM and is left alone.
|
|
39
|
+
* @param {string} mappings VLQ encoded `mappings` of a map for BOM-prefixed content
|
|
40
|
+
* @returns {string} `mappings` for the same content without its BOM
|
|
41
|
+
*/
|
|
42
|
+
const shiftMappings = (mappings) => {
|
|
43
|
+
const { value, end } = decodeVLQ(mappings, 0);
|
|
44
|
+
if (end === 0 || value <= 0) return mappings;
|
|
45
|
+
return encodeVLQ(value - 1) + mappings.slice(end);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Adjust a source map that accompanied BOM-prefixed content for the removal of
|
|
50
|
+
* that BOM. Anything without VLQ `mappings` is passed through untouched, as is
|
|
51
|
+
* a map declaring a version other than 3 — earlier versions spell `mappings`
|
|
52
|
+
* differently. A map that declares no version at all is taken as version 3.
|
|
53
|
+
* @param {(string | RawSourceMap)=} sourceMap the map, as an object or as JSON
|
|
54
|
+
* @returns {(string | RawSourceMap)=} the adjusted map
|
|
55
|
+
*/
|
|
56
|
+
const adjustSourceMapForRemovedBOM = (sourceMap) => {
|
|
57
|
+
if (!sourceMap) return sourceMap;
|
|
58
|
+
|
|
59
|
+
if (typeof sourceMap === "string") {
|
|
60
|
+
/** @type {RawSourceMap} */
|
|
61
|
+
let parsed;
|
|
62
|
+
try {
|
|
63
|
+
parsed = JSON.parse(sourceMap);
|
|
64
|
+
} catch (_err) {
|
|
65
|
+
return sourceMap;
|
|
66
|
+
}
|
|
67
|
+
const adjusted = adjustSourceMapForRemovedBOM(parsed);
|
|
68
|
+
return adjusted === parsed ? sourceMap : JSON.stringify(adjusted);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (sourceMap.version !== undefined && sourceMap.version !== 3) {
|
|
72
|
+
return sourceMap;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (typeof sourceMap.mappings !== "string") return sourceMap;
|
|
76
|
+
|
|
77
|
+
const mappings = shiftMappings(sourceMap.mappings);
|
|
78
|
+
|
|
79
|
+
return mappings === sourceMap.mappings
|
|
80
|
+
? sourceMap
|
|
81
|
+
: { ...sourceMap, mappings };
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @param {Result} result a loader result: content, an optional source map, extra info
|
|
86
|
+
* @returns {Result} the result with a leading BOM removed from its content and its source map kept in sync
|
|
87
|
+
*/
|
|
88
|
+
const removeBOMFromResult = (result) => {
|
|
89
|
+
const content = result[0];
|
|
90
|
+
const withoutBOM = removeBOM(content);
|
|
91
|
+
|
|
92
|
+
if (withoutBOM === content) return result;
|
|
93
|
+
|
|
94
|
+
// Copied rather than rebuilt, so a result carrying no source map keeps its
|
|
95
|
+
// arity.
|
|
96
|
+
const adjusted = /** @type {Result} */ ([...result]);
|
|
97
|
+
|
|
98
|
+
adjusted[0] = withoutBOM;
|
|
99
|
+
|
|
100
|
+
if (adjusted[1]) adjusted[1] = adjustSourceMapForRemovedBOM(adjusted[1]);
|
|
101
|
+
|
|
102
|
+
return adjusted;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
module.exports.adjustSourceMapForRemovedBOM = adjustSourceMapForRemovedBOM;
|
|
106
|
+
module.exports.removeBOM = removeBOM;
|
|
107
|
+
module.exports.removeBOMFromResult = removeBOMFromResult;
|
package/lib/util/runtime.js
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
const SortableSet = require("./SortableSet");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
10
|
+
/** @import Compilation from "../Compilation" */
|
|
11
|
+
/** @import { EntryOptions } from "../Entrypoint" */
|
|
12
12
|
|
|
13
13
|
/** @typedef {SortableSet<string>} RuntimeSpecSortableSet */
|
|
14
14
|
/** @typedef {string | RuntimeSpecSortableSet | undefined} RuntimeSpec */
|
package/lib/util/semver.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
8
|
+
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
9
9
|
/** @typedef {string | number} VersionValue */
|
|
10
10
|
/** @typedef {VersionValue | undefined} SemVerRangeItem */
|
|
11
11
|
/** @typedef {(SemVerRangeItem | SemVerRangeItem[])[]} SemVerRange */
|
|
@@ -5,31 +5,18 @@
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
7
|
const { DEFAULTS } = require("../config/defaults");
|
|
8
|
+
const ObjectMiddleware = require("../serialization/ObjectMiddleware");
|
|
9
|
+
const SerializerMiddleware = require("../serialization/SerializerMiddleware");
|
|
8
10
|
const memoize = require("./memoize");
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
/** @typedef {import("../serialization/BinaryMiddleware").MEASURE_START_OPERATION_TYPE} MEASURE_START_OPERATION */
|
|
12
|
-
/** @typedef {import("../util/Hash").HashFunction} HashFunction */
|
|
13
|
-
/** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Defines the serializer type used by this module.
|
|
17
|
-
* @template D, S, C
|
|
18
|
-
* @typedef {import("../serialization/Serializer")<D, S, C>} Serializer
|
|
19
|
-
*/
|
|
12
|
+
const getSerializer = memoize(() => require("../serialization/Serializer"));
|
|
20
13
|
|
|
21
|
-
const getBinaryMiddleware = memoize(() =>
|
|
22
|
-
require("../serialization/BinaryMiddleware")
|
|
23
|
-
);
|
|
24
|
-
const getObjectMiddleware = memoize(() =>
|
|
25
|
-
require("../serialization/ObjectMiddleware")
|
|
26
|
-
);
|
|
27
14
|
const getSingleItemMiddleware = memoize(() =>
|
|
28
15
|
require("../serialization/SingleItemMiddleware")
|
|
29
16
|
);
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
require("../serialization/
|
|
17
|
+
|
|
18
|
+
const getBinaryMiddleware = memoize(() =>
|
|
19
|
+
require("../serialization/BinaryMiddleware")
|
|
33
20
|
);
|
|
34
21
|
|
|
35
22
|
const getBinaryMiddlewareInstance = memoize(
|
|
@@ -43,7 +30,7 @@ const registerSerializers = memoize(() => {
|
|
|
43
30
|
// This allows bundling all internal serializers
|
|
44
31
|
const internalSerializables = require("./internalSerializables");
|
|
45
32
|
|
|
46
|
-
|
|
33
|
+
ObjectMiddleware.registerLoader(/^webpack\/lib\//, (req) => {
|
|
47
34
|
const loader =
|
|
48
35
|
internalSerializables[
|
|
49
36
|
/** @type {keyof import("./internalSerializables")} */
|
|
@@ -59,6 +46,21 @@ const registerSerializers = memoize(() => {
|
|
|
59
46
|
});
|
|
60
47
|
});
|
|
61
48
|
|
|
49
|
+
/**
|
|
50
|
+
* @import {
|
|
51
|
+
* MEASURE_END_OPERATION_TYPE as MEASURE_END_OPERATION,
|
|
52
|
+
* MEASURE_START_OPERATION_TYPE as MEASURE_START_OPERATION
|
|
53
|
+
* } from "../serialization/BinaryMiddleware"
|
|
54
|
+
*/
|
|
55
|
+
/** @import { HashFunction } from "../util/Hash" */
|
|
56
|
+
/** @import { IntermediateFileSystem } from "../util/fs" */
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Defines the serializer type used by this module.
|
|
60
|
+
* @template D, S, C
|
|
61
|
+
* @typedef {import("../serialization/Serializer")<D, S, C>} Serializer
|
|
62
|
+
*/
|
|
63
|
+
|
|
62
64
|
/**
|
|
63
65
|
* @type {Serializer<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>}
|
|
64
66
|
*/
|
|
@@ -67,16 +69,16 @@ let buffersSerializer;
|
|
|
67
69
|
// Expose serialization API
|
|
68
70
|
module.exports = {
|
|
69
71
|
get register() {
|
|
70
|
-
return
|
|
72
|
+
return ObjectMiddleware.register;
|
|
71
73
|
},
|
|
72
74
|
get registerLoader() {
|
|
73
|
-
return
|
|
75
|
+
return ObjectMiddleware.registerLoader;
|
|
74
76
|
},
|
|
75
77
|
get registerNotSerializable() {
|
|
76
|
-
return
|
|
78
|
+
return ObjectMiddleware.registerNotSerializable;
|
|
77
79
|
},
|
|
78
80
|
get NOT_SERIALIZABLE() {
|
|
79
|
-
return
|
|
81
|
+
return ObjectMiddleware.NOT_SERIALIZABLE;
|
|
80
82
|
},
|
|
81
83
|
/** @type {MEASURE_START_OPERATION} */
|
|
82
84
|
get MEASURE_START_OPERATION() {
|
|
@@ -91,12 +93,11 @@ module.exports = {
|
|
|
91
93
|
registerSerializers();
|
|
92
94
|
const Serializer = getSerializer();
|
|
93
95
|
const binaryMiddleware = getBinaryMiddlewareInstance();
|
|
94
|
-
const SerializerMiddleware = getSerializerMiddleware();
|
|
95
96
|
const SingleItemMiddleware = getSingleItemMiddleware();
|
|
96
97
|
return /** @type {Serializer<EXPECTED_ANY, EXPECTED_ANY, EXPECTED_ANY>} */ (
|
|
97
98
|
buffersSerializer = new Serializer([
|
|
98
99
|
new SingleItemMiddleware(),
|
|
99
|
-
new (
|
|
100
|
+
new ObjectMiddleware((context) => {
|
|
100
101
|
if ("write" in context) {
|
|
101
102
|
context.writeLazy = (value) => {
|
|
102
103
|
context.write(
|
|
@@ -124,12 +125,11 @@ module.exports = {
|
|
|
124
125
|
|
|
125
126
|
const fileMiddleware = new FileMiddleware(fs, hashFunction);
|
|
126
127
|
const binaryMiddleware = getBinaryMiddlewareInstance();
|
|
127
|
-
const SerializerMiddleware = getSerializerMiddleware();
|
|
128
128
|
const SingleItemMiddleware = getSingleItemMiddleware();
|
|
129
129
|
return /** @type {Serializer<D, S, C>} */ (
|
|
130
130
|
new Serializer([
|
|
131
131
|
new SingleItemMiddleware(),
|
|
132
|
-
new (
|
|
132
|
+
new ObjectMiddleware((context) => {
|
|
133
133
|
if ("write" in context) {
|
|
134
134
|
context.writeLazy = (value) => {
|
|
135
135
|
context.write(
|
package/lib/util/source.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
9
|
-
/** @
|
|
8
|
+
/** @import { Source } from "webpack-sources" */
|
|
9
|
+
/** @import Hash from "./Hash" */
|
|
10
10
|
|
|
11
11
|
/** @type {WeakMap<Source, WeakMap<Source, boolean>>} */
|
|
12
12
|
const equalityCache = new WeakMap();
|
|
@@ -5,8 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @import {
|
|
10
|
+
* DestructuringAssignmentProperties,
|
|
11
|
+
* DestructuringAssignmentProperty
|
|
12
|
+
* } from "../javascript/JavascriptParser"
|
|
13
|
+
*/
|
|
10
14
|
|
|
11
15
|
/**
|
|
12
16
|
* Deep first traverse the properties of a destructuring assignment.
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
9
|
-
/** @
|
|
8
|
+
/** @import { WasmLoadingType } from "../../declarations/WebpackOptions" */
|
|
9
|
+
/** @import Compiler from "../Compiler" */
|
|
10
10
|
|
|
11
11
|
/** @typedef {Set<WasmLoadingType>} WasmLoadingTypes */
|
|
12
12
|
|
|
@@ -114,9 +114,10 @@ class EnableWasmLoadingPlugin {
|
|
|
114
114
|
|
|
115
115
|
new ReadFileCompileWasmPlugin({
|
|
116
116
|
mangleImports: compiler.options.optimization.mangleWasmImports,
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
117
|
+
// ESM output has no `require`, and any runtime that loads ESM has
|
|
118
|
+
// `import()` — pairing them by `dynamicImport` emitted CJS into an
|
|
119
|
+
// ES module, which the runtime refuses to load at all.
|
|
120
|
+
import: compiler.options.output.module
|
|
120
121
|
}).apply(compiler);
|
|
121
122
|
}
|
|
122
123
|
|
|
@@ -124,9 +125,10 @@ class EnableWasmLoadingPlugin {
|
|
|
124
125
|
const ReadFileCompileAsyncWasmPlugin = require("../node/ReadFileCompileAsyncWasmPlugin");
|
|
125
126
|
|
|
126
127
|
new ReadFileCompileAsyncWasmPlugin({
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
// ESM output has no `require`, and any runtime that loads ESM has
|
|
129
|
+
// `import()` — pairing them by `dynamicImport` emitted CJS into an
|
|
130
|
+
// ES module, which the runtime refuses to load at all.
|
|
131
|
+
import: compiler.options.output.module
|
|
130
132
|
}).apply(compiler);
|
|
131
133
|
}
|
|
132
134
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author sheo13666q @sheo13666q
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
|
+
const {
|
|
10
|
+
getPresentKinds,
|
|
11
|
+
reEncodeDigest,
|
|
12
|
+
usesFullHashDigest
|
|
13
|
+
} = require("../TemplatedPathPlugin");
|
|
14
|
+
|
|
15
|
+
/** @import Compilation from "../Compilation" */
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Whether the runtime needs `getFullHash` to build a binary's name. A `[hash]` next to
|
|
19
|
+
* a module resolves to that module's hash, not the compilation's, so only the explicit
|
|
20
|
+
* `[fullhash]` spelling asks for it — and a digest is inlined rather than read.
|
|
21
|
+
* @param {string} filename `output.webassemblyModuleFilename`
|
|
22
|
+
* @returns {boolean} true when the runtime reads the compilation hash
|
|
23
|
+
*/
|
|
24
|
+
const needsRuntimeFullHash = (filename) =>
|
|
25
|
+
getPresentKinds(filename).has("fullhash") && !usesFullHashDigest(filename);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The compilation-hash half of the `getPath` data for interpolating
|
|
29
|
+
* `output.webassemblyModuleFilename` into runtime code.
|
|
30
|
+
* @param {Compilation} compilation the compilation
|
|
31
|
+
* @returns {{ hash: string, hashWithLength: (length: number) => string, hashWithDigest: (digest: string, length?: number) => string }} the fields
|
|
32
|
+
*/
|
|
33
|
+
const fullHashPathData = (compilation) => ({
|
|
34
|
+
hash: `" + ${RuntimeGlobals.getFullHash}() + "`,
|
|
35
|
+
hashWithLength: (length) =>
|
|
36
|
+
`" + ${RuntimeGlobals.getFullHash}().slice(0, ${length}) + "`,
|
|
37
|
+
// A digest re-encodes the hash, which the runtime expression above cannot carry, so
|
|
38
|
+
// the settled value is inlined instead — byte-identical to the emitted filename.
|
|
39
|
+
hashWithDigest: (digest, length) => {
|
|
40
|
+
const { fullHash, outputOptions } = compilation;
|
|
41
|
+
// Pre-hash pass: a stand-in, replaced on the post-hash re-render that
|
|
42
|
+
// `needsInlinedFullHash` asks for. Matches `GetFullHashRuntimeModule`.
|
|
43
|
+
if (!fullHash) return length ? "x".repeat(length) : "x";
|
|
44
|
+
const hash = reEncodeDigest(
|
|
45
|
+
fullHash,
|
|
46
|
+
outputOptions.hashDigest || "hex",
|
|
47
|
+
digest
|
|
48
|
+
);
|
|
49
|
+
return length ? hash.slice(0, length) : hash;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
module.exports.fullHashPathData = fullHashPathData;
|
|
54
|
+
module.exports.needsRuntimeFullHash = needsRuntimeFullHash;
|
|
@@ -8,12 +8,15 @@
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
+
const { fullHashPathData } = require("../wasm/wasmModuleFilename");
|
|
11
12
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
13
|
+
/** @import Chunk from "../Chunk" */
|
|
14
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
15
|
+
/** @import Compilation from "../Compilation" */
|
|
16
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
14
17
|
|
|
15
18
|
/** @typedef {(wasmModuleSrcPath: string) => string} GenerateBeforeLoadBinaryCode */
|
|
16
|
-
/** @typedef {(wasmModuleSrcPath: string) => string} GenerateLoadBinaryCode */
|
|
19
|
+
/** @typedef {(wasmModuleSrcPath: string, runtime: RuntimeSpec, analyzable: boolean) => string} GenerateLoadBinaryCode */
|
|
17
20
|
/** @typedef {() => string} GenerateBeforeCompileStreaming */
|
|
18
21
|
|
|
19
22
|
/**
|
|
@@ -22,6 +25,7 @@ const Template = require("../Template");
|
|
|
22
25
|
* @property {GenerateBeforeLoadBinaryCode=} generateBeforeLoadBinaryCode
|
|
23
26
|
* @property {GenerateBeforeCompileStreaming=} generateBeforeCompileStreaming
|
|
24
27
|
* @property {boolean} supportsStreaming
|
|
28
|
+
* @property {boolean=} fullHashDigest the binary's name inlines a re-encoded compilation hash
|
|
25
29
|
*/
|
|
26
30
|
|
|
27
31
|
class AsyncWasmCompileRuntimeModule extends RuntimeModule {
|
|
@@ -32,9 +36,16 @@ class AsyncWasmCompileRuntimeModule extends RuntimeModule {
|
|
|
32
36
|
generateLoadBinaryCode,
|
|
33
37
|
generateBeforeLoadBinaryCode,
|
|
34
38
|
generateBeforeCompileStreaming,
|
|
35
|
-
supportsStreaming
|
|
39
|
+
supportsStreaming,
|
|
40
|
+
fullHashDigest
|
|
36
41
|
}) {
|
|
37
42
|
super("wasm compile", RuntimeModule.STAGE_NORMAL);
|
|
43
|
+
// A re-encoded digest is inlined from the settled hash, so this has to render
|
|
44
|
+
// again once there is one.
|
|
45
|
+
if (fullHashDigest) {
|
|
46
|
+
/** @type {boolean} */
|
|
47
|
+
this.fullHash = true;
|
|
48
|
+
}
|
|
38
49
|
/** @type {GenerateLoadBinaryCode} */
|
|
39
50
|
this.generateLoadBinaryCode = generateLoadBinaryCode;
|
|
40
51
|
/** @type {GenerateBeforeLoadBinaryCode | undefined} */
|
|
@@ -56,24 +67,35 @@ class AsyncWasmCompileRuntimeModule extends RuntimeModule {
|
|
|
56
67
|
// Opt-out fallback to non-streaming when the server serves wasm with a wrong MIME type.
|
|
57
68
|
const streamingFallback = outputOptions.wasmStreamingFallback;
|
|
58
69
|
const fn = RuntimeGlobals.compileWasm;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
module: {
|
|
66
|
-
id: '" + wasmModuleId + "',
|
|
67
|
-
hash: '" + wasmModuleHash + "',
|
|
68
|
-
hashWithLength(length) {
|
|
69
|
-
return `" + wasmModuleHash.slice(0, ${length}) + "`;
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
runtime: chunk.runtime
|
|
73
|
-
}
|
|
70
|
+
// Analyzable output bakes the binary's URL into the call site instead.
|
|
71
|
+
const analyzable = runtimeTemplate.supportsAnalyzable(
|
|
72
|
+
"wasm",
|
|
73
|
+
/** @type {ChunkGraph} */ (this.chunkGraph),
|
|
74
|
+
undefined,
|
|
75
|
+
chunk.runtime
|
|
74
76
|
);
|
|
77
|
+
const wasmModuleSrcPath = analyzable
|
|
78
|
+
? "wasmModuleUrl"
|
|
79
|
+
: compilation.getPath(
|
|
80
|
+
JSON.stringify(outputOptions.webassemblyModuleFilename),
|
|
81
|
+
{
|
|
82
|
+
...fullHashPathData(compilation),
|
|
83
|
+
module: {
|
|
84
|
+
id: '" + wasmModuleId + "',
|
|
85
|
+
hash: '" + wasmModuleHash + "',
|
|
86
|
+
hashWithLength(length) {
|
|
87
|
+
return `" + wasmModuleHash.slice(0, ${length}) + "`;
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
runtime: chunk.runtime
|
|
91
|
+
}
|
|
92
|
+
);
|
|
75
93
|
|
|
76
|
-
const loader = this.generateLoadBinaryCode(
|
|
94
|
+
const loader = this.generateLoadBinaryCode(
|
|
95
|
+
wasmModuleSrcPath,
|
|
96
|
+
chunk.runtime,
|
|
97
|
+
analyzable
|
|
98
|
+
);
|
|
77
99
|
|
|
78
100
|
// Fallback path: fetch -> arrayBuffer -> WebAssembly.compile
|
|
79
101
|
const fallback = [
|
|
@@ -138,7 +160,7 @@ class AsyncWasmCompileRuntimeModule extends RuntimeModule {
|
|
|
138
160
|
};
|
|
139
161
|
|
|
140
162
|
return `${fn} = ${runtimeTemplate.basicFunction(
|
|
141
|
-
"wasmModuleId, wasmModuleHash",
|
|
163
|
+
analyzable ? "wasmModuleUrl" : "wasmModuleId, wasmModuleHash",
|
|
142
164
|
this.supportsStreaming
|
|
143
165
|
? getStreaming()
|
|
144
166
|
: [
|
|
@@ -8,12 +8,15 @@
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const RuntimeModule = require("../RuntimeModule");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
+
const { fullHashPathData } = require("../wasm/wasmModuleFilename");
|
|
11
12
|
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
13
|
+
/** @import Chunk from "../Chunk" */
|
|
14
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
15
|
+
/** @import Compilation from "../Compilation" */
|
|
16
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
14
17
|
|
|
15
18
|
/** @typedef {(wasmModuleSrcPath: string) => string} GenerateBeforeLoadBinaryCode */
|
|
16
|
-
/** @typedef {(wasmModuleSrcPath: string) => string} GenerateLoadBinaryCode */
|
|
19
|
+
/** @typedef {(wasmModuleSrcPath: string, runtime: RuntimeSpec, analyzable: boolean) => string} GenerateLoadBinaryCode */
|
|
17
20
|
/** @typedef {() => string} GenerateBeforeInstantiateStreaming */
|
|
18
21
|
|
|
19
22
|
/**
|
|
@@ -22,6 +25,7 @@ const Template = require("../Template");
|
|
|
22
25
|
* @property {GenerateBeforeLoadBinaryCode=} generateBeforeLoadBinaryCode
|
|
23
26
|
* @property {GenerateBeforeInstantiateStreaming=} generateBeforeInstantiateStreaming
|
|
24
27
|
* @property {boolean} supportsStreaming
|
|
28
|
+
* @property {boolean=} fullHashDigest the binary's name inlines a re-encoded compilation hash
|
|
25
29
|
*/
|
|
26
30
|
|
|
27
31
|
class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
|
|
@@ -32,9 +36,16 @@ class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
|
|
|
32
36
|
generateLoadBinaryCode,
|
|
33
37
|
generateBeforeLoadBinaryCode,
|
|
34
38
|
generateBeforeInstantiateStreaming,
|
|
35
|
-
supportsStreaming
|
|
39
|
+
supportsStreaming,
|
|
40
|
+
fullHashDigest
|
|
36
41
|
}) {
|
|
37
42
|
super("wasm loading", RuntimeModule.STAGE_NORMAL);
|
|
43
|
+
// A re-encoded digest is inlined from the settled hash, so this has to render
|
|
44
|
+
// again once there is one.
|
|
45
|
+
if (fullHashDigest) {
|
|
46
|
+
/** @type {boolean} */
|
|
47
|
+
this.fullHash = true;
|
|
48
|
+
}
|
|
38
49
|
/** @type {GenerateLoadBinaryCode} */
|
|
39
50
|
this.generateLoadBinaryCode = generateLoadBinaryCode;
|
|
40
51
|
/** @type {generateBeforeLoadBinaryCode | undefined} */
|
|
@@ -57,24 +68,35 @@ class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
|
|
|
57
68
|
// Opt-in fallback to non-streaming when the server serves wasm with a wrong MIME type.
|
|
58
69
|
const streamingFallback = outputOptions.wasmStreamingFallback;
|
|
59
70
|
const fn = RuntimeGlobals.instantiateWasm;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
module: {
|
|
67
|
-
id: '" + wasmModuleId + "',
|
|
68
|
-
hash: '" + wasmModuleHash + "',
|
|
69
|
-
hashWithLength(length) {
|
|
70
|
-
return `" + wasmModuleHash.slice(0, ${length}) + "`;
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
runtime: chunk.runtime
|
|
74
|
-
}
|
|
71
|
+
// Analyzable output bakes the binary's URL into the call site instead.
|
|
72
|
+
const analyzable = runtimeTemplate.supportsAnalyzable(
|
|
73
|
+
"wasm",
|
|
74
|
+
/** @type {ChunkGraph} */ (this.chunkGraph),
|
|
75
|
+
undefined,
|
|
76
|
+
chunk.runtime
|
|
75
77
|
);
|
|
78
|
+
const wasmModuleSrcPath = analyzable
|
|
79
|
+
? "wasmModuleUrl"
|
|
80
|
+
: compilation.getPath(
|
|
81
|
+
JSON.stringify(outputOptions.webassemblyModuleFilename),
|
|
82
|
+
{
|
|
83
|
+
...fullHashPathData(compilation),
|
|
84
|
+
module: {
|
|
85
|
+
id: '" + wasmModuleId + "',
|
|
86
|
+
hash: '" + wasmModuleHash + "',
|
|
87
|
+
hashWithLength(length) {
|
|
88
|
+
return `" + wasmModuleHash.slice(0, ${length}) + "`;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
runtime: chunk.runtime
|
|
92
|
+
}
|
|
93
|
+
);
|
|
76
94
|
|
|
77
|
-
const loader = this.generateLoadBinaryCode(
|
|
95
|
+
const loader = this.generateLoadBinaryCode(
|
|
96
|
+
wasmModuleSrcPath,
|
|
97
|
+
chunk.runtime,
|
|
98
|
+
analyzable
|
|
99
|
+
);
|
|
78
100
|
const fallback = [
|
|
79
101
|
`.then(${runtimeTemplate.returningFunction("x.arrayBuffer()", "x")})`,
|
|
80
102
|
`.then(${runtimeTemplate.returningFunction(
|
|
@@ -149,7 +171,9 @@ class AsyncWasmLoadingRuntimeModule extends RuntimeModule {
|
|
|
149
171
|
};
|
|
150
172
|
|
|
151
173
|
return `${fn} = ${runtimeTemplate.basicFunction(
|
|
152
|
-
|
|
174
|
+
analyzable
|
|
175
|
+
? "exports, wasmModuleUrl, importsObj"
|
|
176
|
+
: "exports, wasmModuleId, wasmModuleHash, importsObj",
|
|
153
177
|
this.supportsStreaming
|
|
154
178
|
? getStreaming()
|
|
155
179
|
: [
|