@depup/webpack 5.109.2-depup.0 → 5.110.1-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 +26 -17
- 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 +117 -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 +50 -13
- 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 +101 -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 +32 -47
- 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 +141 -85
- 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 +332 -169
- package/lib/RuntimeTemplate.js +2792 -352
- 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 +2 -2
- 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 +261 -79
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -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 +57 -24
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +168 -88
- 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 +5324 -0
- package/lib/css/syntax.js +9579 -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 +156 -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 +4 -4
- 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 +13 -10
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
- 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 +27 -19
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +20 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -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 +37 -29
- 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 +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- 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 +49 -35
- 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 +51 -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 +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- 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/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/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 +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -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 +282 -162
- 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 +5557 -1155
- 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 +98 -113
- 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 +14 -1
- 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 +72 -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 +985 -470
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -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 +10 -6
- 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 -78
- 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 +1 -1
- 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 +23 -6
- 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 +24 -15
- 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 +7 -7
- 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 +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- 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 +1050 -24
- package/lib/util/StringXor.js +1 -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 +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- 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 +6 -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/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 +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -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 +34 -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 +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -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 +670 -36
- 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 +3144 -454
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const { pathToFileURL } = require("url");
|
|
9
|
-
const
|
|
9
|
+
const memoize = require("../util/memoize");
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
const getLoaderLoadingError = memoize(() =>
|
|
12
|
+
require("../errors/LoaderLoadingError")
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
/** @import { LoaderObject } from "./LoaderRunner" */
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* Lazily-compiled dynamic `import()`. Built on first use so this file still
|
|
@@ -26,7 +30,7 @@ let importModule;
|
|
|
26
30
|
function handleResult(loader, module, callback) {
|
|
27
31
|
if (typeof module !== "function" && typeof module !== "object") {
|
|
28
32
|
return callback(
|
|
29
|
-
new
|
|
33
|
+
new (getLoaderLoadingError())(
|
|
30
34
|
`Module '${loader.path}' is not a loader (export function or es6 module)`
|
|
31
35
|
)
|
|
32
36
|
);
|
|
@@ -41,7 +45,7 @@ function handleResult(loader, module, callback) {
|
|
|
41
45
|
typeof loader.pitch !== "function"
|
|
42
46
|
) {
|
|
43
47
|
return callback(
|
|
44
|
-
new
|
|
48
|
+
new (getLoaderLoadingError())(
|
|
45
49
|
`Module '${loader.path}' is not a loader (must have normal or pitch function)`
|
|
46
50
|
)
|
|
47
51
|
);
|
|
@@ -7,10 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
const { LogType } = require("./Logger");
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/**
|
|
11
|
+
* @import {
|
|
12
|
+
* FilterItemTypes,
|
|
13
|
+
* FilterTypes
|
|
14
|
+
* } from "../../declarations/WebpackOptions"
|
|
15
|
+
*/
|
|
16
|
+
/** @import { LogTypeEnum, Args } from "./Logger" */
|
|
14
17
|
|
|
15
18
|
/** @typedef {(item: string) => boolean} FilterFunction */
|
|
16
19
|
/** @typedef {(value: string, type: LogTypeEnum, args?: Args) => void} LoggingFunction */
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
9
9
|
const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
11
|
+
/** @import Chunk from "../Chunk" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
|
+
/** @import { RuntimeRequirements } from "../Module" */
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Defines the common js chunk loading plugin options type used by this module.
|
|
@@ -71,30 +71,44 @@ class CommonJsChunkLoadingPlugin {
|
|
|
71
71
|
const handler = (chunk, set) => {
|
|
72
72
|
if (onceForChunkSet.has(chunk)) return;
|
|
73
73
|
onceForChunkSet.add(chunk);
|
|
74
|
+
if (!isEnabledForChunk(chunk)) return;
|
|
75
|
+
compilation.addRuntimeModule(chunk, new ChunkLoadingRuntimeModule(set));
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Installing a chunk is the only part that writes the module factories and
|
|
79
|
+
* looks a chunk id up; a base uri or `onChunksLoaded` comes without either.
|
|
80
|
+
* Kept off `handler`, which runs once per chunk and so cannot see which of the
|
|
81
|
+
* requirements below the chunk ends up with.
|
|
82
|
+
* @param {Chunk} chunk chunk
|
|
83
|
+
* @param {RuntimeRequirements} set runtime requirements
|
|
84
|
+
*/
|
|
85
|
+
const installHandler = (chunk, set) => {
|
|
74
86
|
if (!isEnabledForChunk(chunk)) return;
|
|
75
87
|
set.add(RuntimeGlobals.moduleFactoriesAddOnly);
|
|
76
88
|
set.add(RuntimeGlobals.hasOwnProperty);
|
|
77
|
-
compilation.addRuntimeModule(chunk, new ChunkLoadingRuntimeModule(set));
|
|
78
89
|
};
|
|
79
90
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
.
|
|
91
|
+
for (const requirement of [
|
|
92
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
93
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers,
|
|
94
|
+
RuntimeGlobals.hmrDownloadManifest,
|
|
95
|
+
RuntimeGlobals.baseURI,
|
|
96
|
+
RuntimeGlobals.externalInstallChunk,
|
|
97
|
+
RuntimeGlobals.onChunksLoaded
|
|
98
|
+
]) {
|
|
99
|
+
compilation.hooks.runtimeRequirementInTree
|
|
100
|
+
.for(requirement)
|
|
101
|
+
.tap(PLUGIN_NAME, handler);
|
|
102
|
+
}
|
|
103
|
+
for (const requirement of [
|
|
104
|
+
RuntimeGlobals.ensureChunkHandlers,
|
|
105
|
+
RuntimeGlobals.externalInstallChunk,
|
|
106
|
+
RuntimeGlobals.hmrDownloadUpdateHandlers
|
|
107
|
+
]) {
|
|
108
|
+
compilation.hooks.runtimeRequirementInTree
|
|
109
|
+
.for(requirement)
|
|
110
|
+
.tap(PLUGIN_NAME, installHandler);
|
|
111
|
+
}
|
|
98
112
|
|
|
99
113
|
compilation.hooks.runtimeRequirementInTree
|
|
100
114
|
.for(RuntimeGlobals.ensureChunkHandlers)
|
|
@@ -11,9 +11,13 @@ const createConsoleLogger = require("../logging/createConsoleLogger");
|
|
|
11
11
|
const NodeWatchFileSystem = require("./NodeWatchFileSystem");
|
|
12
12
|
const nodeConsole = require("./nodeConsole");
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @import {
|
|
16
|
+
* InfrastructureLogging
|
|
17
|
+
* } from "../../declarations/WebpackOptions"
|
|
18
|
+
*/
|
|
19
|
+
/** @import Compiler from "../Compiler" */
|
|
20
|
+
/** @import { InputFileSystem } from "../util/fs" */
|
|
17
21
|
|
|
18
22
|
/**
|
|
19
23
|
* Defines the node environment plugin options type used by this module.
|
|
@@ -62,6 +66,16 @@ class NodeEnvironmentPlugin {
|
|
|
62
66
|
compiler.outputFileSystem = fs;
|
|
63
67
|
compiler.intermediateFileSystem = fs;
|
|
64
68
|
compiler.watchFileSystem = new NodeWatchFileSystem(inputFileSystem);
|
|
69
|
+
// Symmetric to the beforeRun purge below: the stat/readdir/readFile caches
|
|
70
|
+
// would otherwise outlive `close()` for as long as the compiler is held.
|
|
71
|
+
compiler.hooks.shutdown.tap(PLUGIN_NAME, () => {
|
|
72
|
+
if (
|
|
73
|
+
compiler.inputFileSystem === inputFileSystem &&
|
|
74
|
+
inputFileSystem.purge
|
|
75
|
+
) {
|
|
76
|
+
inputFileSystem.purge();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
65
79
|
compiler.hooks.beforeRun.tap(PLUGIN_NAME, (compiler) => {
|
|
66
80
|
if (
|
|
67
81
|
compiler.inputFileSystem === inputFileSystem &&
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
const ExternalsPlugin = require("../ExternalsPlugin");
|
|
9
9
|
const { builtins } = require("./nodeBuiltins");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
11
|
+
/** @import { ExternalsType } from "../../declarations/WebpackOptions" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
13
|
|
|
14
14
|
class NodeTargetPlugin {
|
|
15
15
|
/**
|
|
@@ -39,5 +39,6 @@ class NodeTargetPlugin {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
NodeTargetPlugin.builtins = builtins;
|
|
43
|
+
|
|
42
44
|
module.exports = NodeTargetPlugin;
|
|
43
|
-
module.exports.builtins = builtins;
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
const CommonJsChunkFormatPlugin = require("../javascript/CommonJsChunkFormatPlugin");
|
|
9
9
|
const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
11
|
+
/** @import Compiler from "../Compiler" */
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Represents the node template plugin runtime component.
|
|
@@ -6,15 +6,75 @@
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
const util = require("util");
|
|
9
|
-
const
|
|
9
|
+
const memoize = require("../util/memoize");
|
|
10
|
+
|
|
11
|
+
// watchpack is only reachable from `watch`, so non-watch builds never load it
|
|
12
|
+
const getWatchpack = memoize(() => require("watchpack"));
|
|
10
13
|
|
|
11
14
|
/** @typedef {InstanceType<import("watchpack")>} Watchpack */
|
|
12
|
-
/** @
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
/** @import { TimeInfoEntries, WatchOptions } from "watchpack" */
|
|
16
|
+
/**
|
|
17
|
+
* @import {
|
|
18
|
+
* InputFileSystem,
|
|
19
|
+
* WatchMethod,
|
|
20
|
+
* Changes,
|
|
21
|
+
* Removals
|
|
22
|
+
* } from "../util/fs"
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
// Watchpack pools DirectoryWatchers per options object identity; interning by
|
|
26
|
+
// value lets a MultiCompiler's children share one pool instead of one scan each.
|
|
27
|
+
/** @type {Map<string, WatchOptions>} */
|
|
28
|
+
const canonicalWatchOptions = new Map();
|
|
29
|
+
/** @type {WeakMap<RegExp, string>} */
|
|
30
|
+
const regExpKeys = new WeakMap();
|
|
31
|
+
let nextRegExpKey = 0;
|
|
32
|
+
|
|
33
|
+
// A RegExp keys by reference, so two configs spelling the same one inline do
|
|
34
|
+
// not share a pool.
|
|
35
|
+
/**
|
|
36
|
+
* @param {WatchOptions["ignored"]} ignored the `ignored` option
|
|
37
|
+
* @returns {string} key describing it, or "" when it cannot be keyed
|
|
38
|
+
*/
|
|
39
|
+
const ignoredKey = (ignored) => {
|
|
40
|
+
if (ignored === undefined || ignored === null) return "-";
|
|
41
|
+
if (typeof ignored === "string") return `s${ignored}`;
|
|
42
|
+
if (Array.isArray(ignored)) return `a${JSON.stringify(ignored)}`;
|
|
43
|
+
if (!(ignored instanceof RegExp)) return "";
|
|
44
|
+
let key = regExpKeys.get(ignored);
|
|
45
|
+
if (key === undefined) {
|
|
46
|
+
key = `r${nextRegExpKey++}`;
|
|
47
|
+
regExpKeys.set(ignored, key);
|
|
48
|
+
}
|
|
49
|
+
return key;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Snapshot rather than keep the caller's object: mutating it later would hand
|
|
53
|
+
// the next caller options it never asked for.
|
|
54
|
+
/**
|
|
55
|
+
* @param {WatchOptions} options watch options
|
|
56
|
+
* @returns {WatchOptions} a shared object equal to `options`, or `options`
|
|
57
|
+
*/
|
|
58
|
+
const getCanonicalWatchOptions = (options) => {
|
|
59
|
+
const ignored = ignoredKey(options.ignored);
|
|
60
|
+
if (ignored === "") return options;
|
|
61
|
+
const key = `${options.aggregateTimeout}|${Boolean(
|
|
62
|
+
options.followSymlinks
|
|
63
|
+
)}|${options.poll}|${ignored}`;
|
|
64
|
+
const canonical = canonicalWatchOptions.get(key);
|
|
65
|
+
if (canonical !== undefined) return canonical;
|
|
66
|
+
/** @type {WatchOptions} */
|
|
67
|
+
const snapshot = {
|
|
68
|
+
aggregateTimeout: options.aggregateTimeout,
|
|
69
|
+
followSymlinks: options.followSymlinks,
|
|
70
|
+
ignored: Array.isArray(options.ignored)
|
|
71
|
+
? [...options.ignored]
|
|
72
|
+
: options.ignored,
|
|
73
|
+
poll: options.poll
|
|
74
|
+
};
|
|
75
|
+
canonicalWatchOptions.set(key, snapshot);
|
|
76
|
+
return snapshot;
|
|
77
|
+
};
|
|
18
78
|
|
|
19
79
|
class NodeWatchFileSystem {
|
|
20
80
|
/**
|
|
@@ -28,8 +88,9 @@ class NodeWatchFileSystem {
|
|
|
28
88
|
this.watcherOptions = {
|
|
29
89
|
aggregateTimeout: 0
|
|
30
90
|
};
|
|
91
|
+
// `watch` replaces this with a watcher built from its own options
|
|
31
92
|
/** @type {Watchpack | null} */
|
|
32
|
-
this.watcher =
|
|
93
|
+
this.watcher = null;
|
|
33
94
|
}
|
|
34
95
|
|
|
35
96
|
/** @type {WatchMethod} */
|
|
@@ -64,7 +125,7 @@ class NodeWatchFileSystem {
|
|
|
64
125
|
throw new Error("Invalid arguments: 'callbackUndelayed'");
|
|
65
126
|
}
|
|
66
127
|
const oldWatcher = this.watcher;
|
|
67
|
-
this.watcher = new
|
|
128
|
+
this.watcher = new (getWatchpack())(getCanonicalWatchOptions(options));
|
|
68
129
|
|
|
69
130
|
if (callbackUndelayed) {
|
|
70
131
|
this.watcher.once("change", callbackUndelayed);
|
|
@@ -10,19 +10,16 @@ const Template = require("../Template");
|
|
|
10
10
|
const {
|
|
11
11
|
generateJavascriptHMR
|
|
12
12
|
} = require("../hmr/JavascriptHotModuleReplacementHelper");
|
|
13
|
-
const {
|
|
14
|
-
chunkHasJs,
|
|
15
|
-
getChunkFilenameTemplate
|
|
16
|
-
} = require("../javascript/JavascriptModulesPlugin");
|
|
13
|
+
const { chunkHasJs } = require("../javascript/JavascriptModulesPlugin");
|
|
17
14
|
const { getInitialChunkIds } = require("../javascript/StartupHelpers");
|
|
15
|
+
const { renderBaseUri } = require("../runtime/baseUri");
|
|
18
16
|
const compileBooleanMatcher = require("../util/compileBooleanMatcher");
|
|
19
|
-
const { getUndoPath } = require("../util/identifier");
|
|
20
17
|
|
|
21
|
-
/** @
|
|
22
|
-
/** @
|
|
23
|
-
/** @
|
|
24
|
-
/** @
|
|
25
|
-
/** @
|
|
18
|
+
/** @import Chunk from "../Chunk" */
|
|
19
|
+
/** @import ChunkGraph from "../ChunkGraph" */
|
|
20
|
+
/** @import Compilation from "../Compilation" */
|
|
21
|
+
/** @import RuntimeTemplate from "../RuntimeTemplate" */
|
|
22
|
+
/** @import { ReadOnlyRuntimeRequirements } from "../Module" */
|
|
26
23
|
|
|
27
24
|
class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
28
25
|
/**
|
|
@@ -45,15 +42,14 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
45
42
|
*/
|
|
46
43
|
_generateBaseUri(chunk, rootOutputDir, runtimeTemplate) {
|
|
47
44
|
const options = chunk.getEntryOptions();
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
});`;
|
|
45
|
+
return renderBaseUri(
|
|
46
|
+
options ? options.baseUri : undefined,
|
|
47
|
+
`require(${runtimeTemplate.renderNodePrefixForCoreModule("url")}).pathToFileURL(${
|
|
48
|
+
rootOutputDir
|
|
49
|
+
? `__dirname + ${JSON.stringify(`/${rootOutputDir}`)}`
|
|
50
|
+
: "__filename"
|
|
51
|
+
})`
|
|
52
|
+
);
|
|
57
53
|
}
|
|
58
54
|
|
|
59
55
|
/**
|
|
@@ -86,18 +82,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
86
82
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
|
87
83
|
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
|
88
84
|
|
|
89
|
-
const
|
|
90
|
-
getChunkFilenameTemplate(chunk, compilation.outputOptions),
|
|
91
|
-
{
|
|
92
|
-
chunk,
|
|
93
|
-
contentHashType: "javascript"
|
|
94
|
-
}
|
|
95
|
-
);
|
|
96
|
-
const rootOutputDir = getUndoPath(
|
|
97
|
-
outputName,
|
|
98
|
-
compilation.outputOptions.path,
|
|
99
|
-
false
|
|
100
|
-
);
|
|
85
|
+
const rootOutputDir = runtimeTemplate.chunkRootOutputDir(chunk, false);
|
|
101
86
|
|
|
102
87
|
const stateExpression = withHmr
|
|
103
88
|
? `${RuntimeGlobals.hmrRuntimeStatePrefix}_readFileVm`
|
|
@@ -108,18 +93,30 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
108
93
|
)
|
|
109
94
|
)}\n}`;
|
|
110
95
|
|
|
96
|
+
// Every part below that reads the table. A chunk asking only for `.b` gets this
|
|
97
|
+
// module for the base uri alone, and then has nothing to look up.
|
|
98
|
+
const withInstalledChunks =
|
|
99
|
+
withOnChunkLoad || withLoading || withExternalInstallChunk || withHmr;
|
|
100
|
+
|
|
111
101
|
return Template.asString([
|
|
112
102
|
withBaseURI
|
|
113
103
|
? this._generateBaseUri(chunk, rootOutputDir, runtimeTemplate)
|
|
114
104
|
: "// no baseURI",
|
|
115
105
|
"",
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
106
|
+
withInstalledChunks
|
|
107
|
+
? Template.asString([
|
|
108
|
+
"// object to store loaded chunks",
|
|
109
|
+
'// "0" means "already loaded", Promise means loading',
|
|
110
|
+
`var installedChunks = ${
|
|
111
|
+
stateExpression
|
|
112
|
+
? runtimeTemplate.assignOr(
|
|
113
|
+
stateExpression,
|
|
114
|
+
installedChunksObject
|
|
115
|
+
)
|
|
116
|
+
: installedChunksObject
|
|
117
|
+
};`
|
|
118
|
+
])
|
|
119
|
+
: "// no installed chunks",
|
|
123
120
|
"",
|
|
124
121
|
withOnChunkLoad
|
|
125
122
|
? `${
|
|
@@ -8,20 +8,14 @@
|
|
|
8
8
|
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
-
const {
|
|
11
|
+
const { usesFullHashDigest } = require("../TemplatedPathPlugin");
|
|
12
|
+
const { needsRuntimeFullHash } = require("../wasm/wasmModuleFilename");
|
|
12
13
|
const AsyncWasmCompileRuntimeModule = require("../wasm-async/AsyncWasmCompileRuntimeModule");
|
|
13
14
|
const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
|
|
14
15
|
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
|
|
20
|
-
* that runtime module must be requested (`[hash]` is the per-module hash here).
|
|
21
|
-
* @param {string} filename `output.webassemblyModuleFilename`
|
|
22
|
-
* @returns {boolean} whether it references the compilation `[fullhash]`
|
|
23
|
-
*/
|
|
24
|
-
const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
|
|
16
|
+
/** @import Chunk from "../Chunk" */
|
|
17
|
+
/** @import Compiler from "../Compiler" */
|
|
18
|
+
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
25
19
|
|
|
26
20
|
/**
|
|
27
21
|
* Defines the read file compile async wasm plugin options type used by this module.
|
|
@@ -63,15 +57,32 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
63
57
|
return wasmLoading === "async-node";
|
|
64
58
|
};
|
|
65
59
|
|
|
60
|
+
// The call site already passes a complete `URL` when it bakes one, and `readFile`
|
|
61
|
+
// takes one as-is. Read that per call: it depends on parse results, so it is not
|
|
62
|
+
// settled while the plugin is being applied.
|
|
66
63
|
/**
|
|
67
|
-
* @
|
|
64
|
+
* @param {string} path rendered path to the wasm file
|
|
65
|
+
* @param {RuntimeSpec} runtime the runtime this loader serves
|
|
66
|
+
* @returns {string} the argument to hand the reader
|
|
67
|
+
*/
|
|
68
|
+
const wasmUrlArg = (path, runtime) =>
|
|
69
|
+
compilation.runtimeTemplate.supportsAnalyzable(
|
|
70
|
+
"wasm",
|
|
71
|
+
undefined,
|
|
72
|
+
undefined,
|
|
73
|
+
runtime
|
|
74
|
+
)
|
|
75
|
+
? path
|
|
76
|
+
: compilation.runtimeTemplate.importMetaUrl(path);
|
|
77
|
+
/**
|
|
78
|
+
* @type {(path: string, runtime: RuntimeSpec) => string} callback to generate code to load the wasm file
|
|
68
79
|
*/
|
|
69
80
|
const generateLoadBinaryCode = this._import
|
|
70
|
-
? (path) =>
|
|
81
|
+
? (path, runtime) =>
|
|
71
82
|
Template.asString([
|
|
72
83
|
"Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
|
|
73
84
|
Template.indent([
|
|
74
|
-
`readFile(
|
|
85
|
+
`readFile(${wasmUrlArg(path, runtime)}, (err, buffer) => {`,
|
|
75
86
|
Template.indent([
|
|
76
87
|
"if (err) return reject(err);",
|
|
77
88
|
"",
|
|
@@ -94,8 +105,14 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
94
105
|
Template.indent([
|
|
95
106
|
"try {",
|
|
96
107
|
Template.indent([
|
|
97
|
-
|
|
98
|
-
|
|
108
|
+
compilation.runtimeTemplate.destructureObject(
|
|
109
|
+
["readFile"],
|
|
110
|
+
`require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("fs")})`
|
|
111
|
+
),
|
|
112
|
+
compilation.runtimeTemplate.destructureObject(
|
|
113
|
+
["join"],
|
|
114
|
+
`require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("path")})`
|
|
115
|
+
),
|
|
99
116
|
"",
|
|
100
117
|
`readFile(join(__dirname, ${path}), function(err, buffer){`,
|
|
101
118
|
Template.indent([
|
|
@@ -106,7 +123,11 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
106
123
|
Template.indent([
|
|
107
124
|
// Return a real ArrayBuffer: some runtimes (e.g. Deno)
|
|
108
125
|
// reject a Node Buffer view here as "not a buffer source".
|
|
109
|
-
|
|
126
|
+
compilation.runtimeTemplate.method(
|
|
127
|
+
"arrayBuffer",
|
|
128
|
+
"",
|
|
129
|
+
"return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);"
|
|
130
|
+
)
|
|
110
131
|
]),
|
|
111
132
|
"});"
|
|
112
133
|
]),
|
|
@@ -129,14 +150,30 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
129
150
|
) {
|
|
130
151
|
return;
|
|
131
152
|
}
|
|
153
|
+
// A baked URL is already a literal, so nothing interpolates the name.
|
|
132
154
|
if (
|
|
133
|
-
|
|
155
|
+
!compilation.runtimeTemplate.supportsAnalyzable(
|
|
156
|
+
"wasm",
|
|
157
|
+
undefined,
|
|
158
|
+
undefined,
|
|
159
|
+
chunk.runtime
|
|
160
|
+
) &&
|
|
161
|
+
needsRuntimeFullHash(
|
|
162
|
+
/** @type {string} */ (
|
|
163
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
164
|
+
)
|
|
165
|
+
)
|
|
134
166
|
) {
|
|
135
167
|
set.add(RuntimeGlobals.getFullHash);
|
|
136
168
|
}
|
|
137
169
|
compilation.addRuntimeModule(
|
|
138
170
|
chunk,
|
|
139
171
|
new AsyncWasmLoadingRuntimeModule({
|
|
172
|
+
fullHashDigest: usesFullHashDigest(
|
|
173
|
+
/** @type {string} */ (
|
|
174
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
175
|
+
)
|
|
176
|
+
),
|
|
140
177
|
generateLoadBinaryCode,
|
|
141
178
|
supportsStreaming: false
|
|
142
179
|
})
|
|
@@ -155,14 +192,30 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
155
192
|
) {
|
|
156
193
|
return;
|
|
157
194
|
}
|
|
195
|
+
// A baked URL is already a literal, so nothing interpolates the name.
|
|
158
196
|
if (
|
|
159
|
-
|
|
197
|
+
!compilation.runtimeTemplate.supportsAnalyzable(
|
|
198
|
+
"wasm",
|
|
199
|
+
undefined,
|
|
200
|
+
undefined,
|
|
201
|
+
chunk.runtime
|
|
202
|
+
) &&
|
|
203
|
+
needsRuntimeFullHash(
|
|
204
|
+
/** @type {string} */ (
|
|
205
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
206
|
+
)
|
|
207
|
+
)
|
|
160
208
|
) {
|
|
161
209
|
set.add(RuntimeGlobals.getFullHash);
|
|
162
210
|
}
|
|
163
211
|
compilation.addRuntimeModule(
|
|
164
212
|
chunk,
|
|
165
213
|
new AsyncWasmCompileRuntimeModule({
|
|
214
|
+
fullHashDigest: usesFullHashDigest(
|
|
215
|
+
/** @type {string} */ (
|
|
216
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
217
|
+
)
|
|
218
|
+
),
|
|
166
219
|
generateLoadBinaryCode,
|
|
167
220
|
supportsStreaming: false
|
|
168
221
|
})
|
|
@@ -8,19 +8,12 @@
|
|
|
8
8
|
const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
|
|
9
9
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
10
10
|
const Template = require("../Template");
|
|
11
|
-
const {
|
|
11
|
+
const { usesFullHashDigest } = require("../TemplatedPathPlugin");
|
|
12
|
+
const { needsRuntimeFullHash } = require("../wasm/wasmModuleFilename");
|
|
12
13
|
const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
|
|
13
14
|
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The wasm runtime inlines `[fullhash]` as a runtime `getFullHash()` call, so
|
|
19
|
-
* that runtime module must be requested (`[hash]` is the per-module hash here).
|
|
20
|
-
* @param {string} filename `output.webassemblyModuleFilename`
|
|
21
|
-
* @returns {boolean} whether it references the compilation `[fullhash]`
|
|
22
|
-
*/
|
|
23
|
-
const usesFullHash = (filename) => getPresentKinds(filename).has("fullhash");
|
|
15
|
+
/** @import Chunk from "../Chunk" */
|
|
16
|
+
/** @import Compiler from "../Compiler" */
|
|
24
17
|
|
|
25
18
|
/**
|
|
26
19
|
* Defines the read file compile wasm plugin options type used by this module.
|
|
@@ -71,7 +64,7 @@ class ReadFileCompileWasmPlugin {
|
|
|
71
64
|
Template.asString([
|
|
72
65
|
"Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
|
|
73
66
|
Template.indent([
|
|
74
|
-
`readFile(
|
|
67
|
+
`readFile(${compilation.runtimeTemplate.importMetaUrl(path)}, (err, buffer) => {`,
|
|
75
68
|
Template.indent([
|
|
76
69
|
"if (err) return reject(err);",
|
|
77
70
|
"",
|
|
@@ -92,8 +85,14 @@ class ReadFileCompileWasmPlugin {
|
|
|
92
85
|
Template.asString([
|
|
93
86
|
"new Promise(function (resolve, reject) {",
|
|
94
87
|
Template.indent([
|
|
95
|
-
|
|
96
|
-
|
|
88
|
+
compilation.runtimeTemplate.destructureObject(
|
|
89
|
+
["readFile"],
|
|
90
|
+
`require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("fs")})`
|
|
91
|
+
),
|
|
92
|
+
compilation.runtimeTemplate.destructureObject(
|
|
93
|
+
["join"],
|
|
94
|
+
`require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("path")})`
|
|
95
|
+
),
|
|
97
96
|
"",
|
|
98
97
|
"try {",
|
|
99
98
|
Template.indent([
|
|
@@ -106,7 +105,11 @@ class ReadFileCompileWasmPlugin {
|
|
|
106
105
|
Template.indent([
|
|
107
106
|
// Return a real ArrayBuffer: some runtimes (e.g. Deno)
|
|
108
107
|
// reject a Node Buffer view here as "not a buffer source".
|
|
109
|
-
|
|
108
|
+
compilation.runtimeTemplate.method(
|
|
109
|
+
"arrayBuffer",
|
|
110
|
+
"",
|
|
111
|
+
"return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);"
|
|
112
|
+
)
|
|
110
113
|
]),
|
|
111
114
|
"});"
|
|
112
115
|
]),
|
|
@@ -131,13 +134,22 @@ class ReadFileCompileWasmPlugin {
|
|
|
131
134
|
}
|
|
132
135
|
set.add(RuntimeGlobals.moduleCache);
|
|
133
136
|
if (
|
|
134
|
-
|
|
137
|
+
needsRuntimeFullHash(
|
|
138
|
+
/** @type {string} */ (
|
|
139
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
140
|
+
)
|
|
141
|
+
)
|
|
135
142
|
) {
|
|
136
143
|
set.add(RuntimeGlobals.getFullHash);
|
|
137
144
|
}
|
|
138
145
|
compilation.addRuntimeModule(
|
|
139
146
|
chunk,
|
|
140
147
|
new WasmChunkLoadingRuntimeModule({
|
|
148
|
+
fullHashDigest: usesFullHashDigest(
|
|
149
|
+
/** @type {string} */ (
|
|
150
|
+
compilation.outputOptions.webassemblyModuleFilename
|
|
151
|
+
)
|
|
152
|
+
),
|
|
141
153
|
generateLoadBinaryCode,
|
|
142
154
|
supportsStreaming: false,
|
|
143
155
|
mangleImports: this.options.mangleImports,
|