@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
package/lib/util/dataURL.js
CHANGED
|
@@ -5,6 +5,9 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const path = require("path");
|
|
9
|
+
const memoize = require("./memoize");
|
|
10
|
+
|
|
8
11
|
// data URL scheme: "data:text/javascript;charset=utf-8;base64,some-string"
|
|
9
12
|
// http://www.ietf.org/rfc/rfc2397.txt
|
|
10
13
|
const URIRegEx = /^data:([^;,]+)?((?:;[^;,]+)*?)(?:;(base64)?)?,(.*)$/i;
|
|
@@ -34,7 +37,228 @@ const decodeDataURI = (uri) => {
|
|
|
34
37
|
}
|
|
35
38
|
};
|
|
36
39
|
|
|
40
|
+
/**
|
|
41
|
+
* A `data:` URI split into the parts a caller has to put back together.
|
|
42
|
+
* `payload` is the text after the comma, still in the form it was written.
|
|
43
|
+
* @typedef {{ mediaType: string, base64: boolean, payload: string }} ParsedDataURI
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
// `URIRegEx`'s `.` stops at a newline, which a raw `<svg>` payload carries, and
|
|
47
|
+
// its `base64` group is optional in a way that reads `;charset=utf8` as one.
|
|
48
|
+
// This one is the strict split a rewriter needs; that one stays as the matcher
|
|
49
|
+
// module requests are recognized by.
|
|
50
|
+
const STRICT_URI_REGEXP = /^data:([^,;]*)((?:;[^,;]*)*),([\s\S]*)$/i;
|
|
51
|
+
|
|
52
|
+
const JSON_TYPE = "json";
|
|
53
|
+
const SVG_TYPE = "svg";
|
|
54
|
+
const CSS_TYPE = "css";
|
|
55
|
+
const HTML_TYPE = "html";
|
|
56
|
+
const JAVASCRIPT_TYPE = "javascript";
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Every language `languageOfMediaType` can name, for a consumer that has to say
|
|
60
|
+
* up front which of them it handles. Stated here rather than at each such
|
|
61
|
+
* consumer: adding one below adds it to every ability that names this.
|
|
62
|
+
* @type {string[]}
|
|
63
|
+
*/
|
|
64
|
+
const EMBEDDED_LANGUAGES = [
|
|
65
|
+
SVG_TYPE,
|
|
66
|
+
CSS_TYPE,
|
|
67
|
+
HTML_TYPE,
|
|
68
|
+
JSON_TYPE,
|
|
69
|
+
JAVASCRIPT_TYPE
|
|
70
|
+
];
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* The language name a media type carries, for a consumer that dispatches on it
|
|
74
|
+
* — a `renderEmbeddedSource` renderer today. Not a grammar table read out of a
|
|
75
|
+
* dataset: it is the handful of essences webpack itself has a notion of, so an
|
|
76
|
+
* unknown one declines rather than guessing. The `+json` structured suffix is
|
|
77
|
+
* read off the subtype.
|
|
78
|
+
* @param {string} mediaType a media type, e.g. `image/svg+xml`
|
|
79
|
+
* @returns {string | undefined} the language, or undefined when it names none
|
|
80
|
+
*/
|
|
81
|
+
const languageOfMediaType = (mediaType) => {
|
|
82
|
+
const essence = mediaType.toLowerCase().trim();
|
|
83
|
+
if (essence === "") return undefined;
|
|
84
|
+
if (essence === "image/svg+xml") return SVG_TYPE;
|
|
85
|
+
if (essence === "text/css") return CSS_TYPE;
|
|
86
|
+
if (essence === "text/html") return HTML_TYPE;
|
|
87
|
+
if (essence === "application/json" || essence.endsWith("+json")) {
|
|
88
|
+
return JSON_TYPE;
|
|
89
|
+
}
|
|
90
|
+
if (/^(?:text|application)\/(?:x-)?(?:ecma|java)script$/.test(essence)) {
|
|
91
|
+
return JAVASCRIPT_TYPE;
|
|
92
|
+
}
|
|
93
|
+
return undefined;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const getMimeTypes = memoize(() => require("./mimeTypes"));
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The language a file's name says it holds, for a module that embeds the file's
|
|
100
|
+
* text rather than a `data:` URI — the same question `languageOfMediaType`
|
|
101
|
+
* answers, read off the extension through webpack's own mime lookup.
|
|
102
|
+
* @param {string | null} filename the file's name, or null when it has none
|
|
103
|
+
* @returns {string | undefined} the language, or undefined when it names none
|
|
104
|
+
*/
|
|
105
|
+
const languageOfFilename = (filename) => {
|
|
106
|
+
if (!filename) return undefined;
|
|
107
|
+
const mediaType = getMimeTypes().lookup(path.extname(filename));
|
|
108
|
+
return typeof mediaType === "string"
|
|
109
|
+
? languageOfMediaType(mediaType)
|
|
110
|
+
: undefined;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Split a `data:` URI, or `null` when it is not one.
|
|
115
|
+
* @param {string} uri the URI, unquoted and unescaped
|
|
116
|
+
* @returns {ParsedDataURI | null} its parts
|
|
117
|
+
*/
|
|
118
|
+
const parseDataURI = (uri) => {
|
|
119
|
+
const match = STRICT_URI_REGEXP.exec(uri);
|
|
120
|
+
if (match === null) return null;
|
|
121
|
+
return {
|
|
122
|
+
mediaType: match[1],
|
|
123
|
+
base64: /;base64$/i.test(match[2]),
|
|
124
|
+
payload: match[3]
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* The payload as text, or `null` when reading it would not round-trip. A
|
|
130
|
+
* percent-escaped payload is declined rather than decoded: how much of it the
|
|
131
|
+
* author escaped is not recorded anywhere in the URI, so re-escaping would
|
|
132
|
+
* rewrite bytes nothing asked to change.
|
|
133
|
+
* @param {ParsedDataURI} parsed the split URI
|
|
134
|
+
* @returns {string | null} the payload as text
|
|
135
|
+
*/
|
|
136
|
+
const decodeDataURIPayload = (parsed) => {
|
|
137
|
+
if (!parsed.base64) {
|
|
138
|
+
return parsed.payload.includes("%") ? null : parsed.payload;
|
|
139
|
+
}
|
|
140
|
+
// Decoding is lenient rather than throwing, so garbage decodes to something
|
|
141
|
+
// that does not round-trip, which is the same answer: leave it alone.
|
|
142
|
+
const text = Buffer.from(parsed.payload, "base64").toString("utf8");
|
|
143
|
+
return Buffer.from(text, "utf8").toString("base64") === parsed.payload
|
|
144
|
+
? text
|
|
145
|
+
: null;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Rebuild a `data:` URI around a new payload, in the form it was written in.
|
|
150
|
+
* @param {ParsedDataURI} parsed the split URI
|
|
151
|
+
* @param {string} text the new payload as text
|
|
152
|
+
* @returns {string} the rebuilt URI
|
|
153
|
+
*/
|
|
154
|
+
const buildDataURI = (parsed, text) => {
|
|
155
|
+
const head = `data:${parsed.mediaType}${parsed.base64 ? ";base64" : ""},`;
|
|
156
|
+
if (parsed.base64) {
|
|
157
|
+
return head + Buffer.from(text, "utf8").toString("base64");
|
|
158
|
+
}
|
|
159
|
+
// Only the two that would change what the URI means: `%` starts an escape and
|
|
160
|
+
// `#` starts a fragment. Everything else stays as the renderer wrote it, and
|
|
161
|
+
// the url token's own quoting is the caller's to apply.
|
|
162
|
+
return head + text.replace(/%/g, "%25").replace(/#/g, "%23");
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* The minified text a renderer answered with, for one that may answer with a
|
|
167
|
+
* whole result instead. `undefined` is a renderer that declined.
|
|
168
|
+
* @param {string | { code?: string } | undefined} answer what it answered
|
|
169
|
+
* @returns {string | undefined} the text, or undefined
|
|
170
|
+
*/
|
|
171
|
+
const embeddedText = (answer) =>
|
|
172
|
+
answer === undefined || typeof answer === "string" ? answer : answer.code;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Everything a run's renderers reported, in the shape a minifier returns —
|
|
176
|
+
* an empty list is left off, so a run nothing was reported over is exactly
|
|
177
|
+
* what it always was.
|
|
178
|
+
* @param {{ warnings?: (Error | string)[], errors?: (Error | string)[] }[]} reported what each answered with
|
|
179
|
+
* @returns {{ warnings?: (Error | string)[], errors?: (Error | string)[] }} the collected diagnostics
|
|
180
|
+
*/
|
|
181
|
+
const collectEmbeddedDiagnostics = (reported) => {
|
|
182
|
+
/** @type {(Error | string)[]} */
|
|
183
|
+
const warnings = [];
|
|
184
|
+
/** @type {(Error | string)[]} */
|
|
185
|
+
const errors = [];
|
|
186
|
+
|
|
187
|
+
for (const entry of reported) {
|
|
188
|
+
if (entry.warnings !== undefined) warnings.push(...entry.warnings);
|
|
189
|
+
if (entry.errors !== undefined) errors.push(...entry.errors);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** @type {{ warnings?: (Error | string)[], errors?: (Error | string)[] }} */
|
|
193
|
+
const out = {};
|
|
194
|
+
|
|
195
|
+
if (warnings.length !== 0) out.warnings = warnings;
|
|
196
|
+
if (errors.length !== 0) out.errors = errors;
|
|
197
|
+
|
|
198
|
+
return out;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* One embedded body a print offered but could not wait for, and the text to
|
|
203
|
+
* print around the answer once it is in: {@link import("./SourceProcessor").DeferredWrite},
|
|
204
|
+
* plus what the grammar has to say about what it offered. `as` names which of
|
|
205
|
+
* that language's productions the body is, where it has more than one — an HTML
|
|
206
|
+
* `style=""` is `"block-contents"` rather than a whole stylesheet.
|
|
207
|
+
* @typedef {import("./SourceProcessor").DeferredWrite & { type: string, hostType: string, as?: string }} DeferredEmbeddedSource
|
|
208
|
+
*/
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* What a renderer made of one embedded body: the minified text, and anything it
|
|
212
|
+
* has to report about it. A bare string is the text alone, `undefined` a
|
|
213
|
+
* renderer that declined.
|
|
214
|
+
* @typedef {{ code?: string, warnings?: (Error | string)[], errors?: (Error | string)[] }} EmbeddedSourceResult
|
|
215
|
+
*/
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Ask a renderer for one embedded body and keep what it reported. Anything it
|
|
219
|
+
* throws is a renderer that did not answer rather than an asset that fails to
|
|
220
|
+
* serialize: the rest of the print stands, the body is spelled as an untapped
|
|
221
|
+
* run spells it, and why it was is not lost.
|
|
222
|
+
* @param {(source: string, info: { type: string, hostType: string, as?: string }) => Promise<string | EmbeddedSourceResult | undefined> | string | EmbeddedSourceResult | undefined} render the caller's renderer
|
|
223
|
+
* @param {{ source: string, type: string, hostType: string, as?: string }} hole the body to offer
|
|
224
|
+
* @param {EmbeddedSourceResult[]} reported collects what each says about them
|
|
225
|
+
* @returns {Promise<string | EmbeddedSourceResult | undefined>} what it answered, or undefined where it declined or threw
|
|
226
|
+
*/
|
|
227
|
+
const askEmbeddedRenderer = async (render, hole, reported) => {
|
|
228
|
+
const { source, type, hostType, as } = hole;
|
|
229
|
+
|
|
230
|
+
try {
|
|
231
|
+
const answer = await render(source, {
|
|
232
|
+
type,
|
|
233
|
+
hostType,
|
|
234
|
+
...(as === undefined ? undefined : { as })
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
if (
|
|
238
|
+
answer !== undefined &&
|
|
239
|
+
typeof answer !== "string" &&
|
|
240
|
+
(answer.warnings !== undefined || answer.errors !== undefined)
|
|
241
|
+
) {
|
|
242
|
+
reported.push(answer);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return answer;
|
|
246
|
+
} catch (error) {
|
|
247
|
+
reported.push({ errors: [/** @type {Error} */ (error)] });
|
|
248
|
+
return undefined;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
|
|
37
252
|
module.exports = {
|
|
253
|
+
EMBEDDED_LANGUAGES,
|
|
38
254
|
URIRegEx,
|
|
39
|
-
|
|
255
|
+
askEmbeddedRenderer,
|
|
256
|
+
buildDataURI,
|
|
257
|
+
collectEmbeddedDiagnostics,
|
|
258
|
+
decodeDataURI,
|
|
259
|
+
decodeDataURIPayload,
|
|
260
|
+
embeddedText,
|
|
261
|
+
languageOfFilename,
|
|
262
|
+
languageOfMediaType,
|
|
263
|
+
parseDataURI
|
|
40
264
|
};
|
|
@@ -9,10 +9,10 @@ const path = require("path");
|
|
|
9
9
|
const urlUtils = require("url");
|
|
10
10
|
const { isAbsolute, join } = require("./fs");
|
|
11
11
|
|
|
12
|
-
/** @
|
|
12
|
+
/** @import { InputFileSystem } from "./fs" */
|
|
13
13
|
/** @typedef {string | Buffer<ArrayBufferLike>} StringOrBuffer */
|
|
14
14
|
/** @typedef {(input: StringOrBuffer, resourcePath: string, fs: InputFileSystem) => Promise<{ source: StringOrBuffer, sourceMap: string | RawSourceMap | undefined, fileDependencies: string[] }>} SourceMapExtractorFunction */
|
|
15
|
-
/** @
|
|
15
|
+
/** @import { RawSourceMap } from "webpack-sources" */
|
|
16
16
|
/** @typedef {(resourcePath: string) => Promise<StringOrBuffer>} ReadResource */
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -315,5 +315,6 @@ async function extractSourceMap(stringOrBuffer, resourcePath, readResource) {
|
|
|
315
315
|
};
|
|
316
316
|
}
|
|
317
317
|
|
|
318
|
+
extractSourceMap.getSourceMappingURL = getSourceMappingURL;
|
|
319
|
+
|
|
318
320
|
module.exports = extractSourceMap;
|
|
319
|
-
module.exports.getSourceMappingURL = getSourceMappingURL;
|
|
@@ -0,0 +1,139 @@
|
|
|
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
|
+
const { dirname, join } = require("./fs");
|
|
9
|
+
|
|
10
|
+
/** @import { InputFileSystem } from "./fs" */
|
|
11
|
+
|
|
12
|
+
/** @typedef {[string, string]} CaseCorrection wrongly cased segment paired with its real name */
|
|
13
|
+
/** @typedef {{ corrections: CaseCorrection[], path: string }} CaseMismatch */
|
|
14
|
+
|
|
15
|
+
/** Bounds the walk for a path pointing far outside any existing directory. */
|
|
16
|
+
const MAX_MISSING_SEGMENTS = 20;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @param {InputFileSystem} fs input file system
|
|
20
|
+
* @param {string} absolutePath absolute path
|
|
21
|
+
* @returns {string} the last segment of the path, or an empty string at the root
|
|
22
|
+
*/
|
|
23
|
+
const basename = (fs, absolutePath) => {
|
|
24
|
+
const parent = dirname(fs, absolutePath);
|
|
25
|
+
if (parent === absolutePath) return "";
|
|
26
|
+
let start = parent.length;
|
|
27
|
+
const charCode = absolutePath.charCodeAt(start);
|
|
28
|
+
if (charCode === 47 /* "/" */ || charCode === 92 /* "\\" */) start++;
|
|
29
|
+
return absolutePath.slice(start);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Finds an existing path that differs from `missingPath` only in the casing of
|
|
34
|
+
* its segments, by listing the directories the path walks through.
|
|
35
|
+
* @param {InputFileSystem} fs input file system
|
|
36
|
+
* @param {string} missingPath absolute path that does not exist
|
|
37
|
+
* @param {(mismatch?: CaseMismatch) => void} callback receives the real path and the wrongly cased segments, outermost first, or nothing when the path does not exist under any casing
|
|
38
|
+
* @returns {void}
|
|
39
|
+
*/
|
|
40
|
+
const findCaseMismatch = (fs, missingPath, callback) => {
|
|
41
|
+
/** @type {string[]} */
|
|
42
|
+
const segments = [];
|
|
43
|
+
/** @type {CaseCorrection[]} */
|
|
44
|
+
const corrections = [];
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @param {string} directory existing directory the remaining segments start from
|
|
48
|
+
* @param {string[]} entries its entries
|
|
49
|
+
* @param {number} index index into `segments`
|
|
50
|
+
* @returns {void}
|
|
51
|
+
*/
|
|
52
|
+
const walkDown = (directory, entries, index) => {
|
|
53
|
+
const name = segments[index];
|
|
54
|
+
let realName = name;
|
|
55
|
+
if (!entries.includes(name)) {
|
|
56
|
+
const lowerCasedName = name.toLowerCase();
|
|
57
|
+
const matches = entries.filter((e) => e.toLowerCase() === lowerCasedName);
|
|
58
|
+
// More than one match means the real name is not knowable from the request alone
|
|
59
|
+
if (matches.length !== 1) return callback();
|
|
60
|
+
realName = matches[0];
|
|
61
|
+
corrections.push([name, realName]);
|
|
62
|
+
}
|
|
63
|
+
const next = join(fs, directory, realName);
|
|
64
|
+
if (index === segments.length - 1) {
|
|
65
|
+
return callback(
|
|
66
|
+
corrections.length > 0 ? { corrections, path: next } : undefined
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
fs.readdir(next, (err, nextEntries) => {
|
|
70
|
+
if (err || !nextEntries) return callback();
|
|
71
|
+
walkDown(next, /** @type {string[]} */ (nextEntries), index + 1);
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
let current = missingPath;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @returns {void}
|
|
79
|
+
*/
|
|
80
|
+
const walkUp = () => {
|
|
81
|
+
const parent = dirname(fs, current);
|
|
82
|
+
const name = basename(fs, current);
|
|
83
|
+
if (parent === current || name === "") return callback();
|
|
84
|
+
segments.push(name);
|
|
85
|
+
if (segments.length > MAX_MISSING_SEGMENTS) return callback();
|
|
86
|
+
fs.readdir(parent, (err, entries) => {
|
|
87
|
+
if (err || !entries) {
|
|
88
|
+
current = parent;
|
|
89
|
+
return walkUp();
|
|
90
|
+
}
|
|
91
|
+
segments.reverse();
|
|
92
|
+
walkDown(parent, /** @type {string[]} */ (entries), 0);
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
walkUp();
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Rewrites a request with the real casing found on disk. Corrections are
|
|
101
|
+
* case-only, so each one keeps the length and position of what it replaces —
|
|
102
|
+
* a request that omitted the extension spells a prefix of the segment.
|
|
103
|
+
* @param {string} request request as written
|
|
104
|
+
* @param {CaseCorrection[]} corrections corrections, outermost first
|
|
105
|
+
* @returns {string | undefined} the corrected request, or undefined when a correction is not spelled out in the request
|
|
106
|
+
*/
|
|
107
|
+
const applyCaseCorrections = (request, corrections) => {
|
|
108
|
+
let result = request;
|
|
109
|
+
let cursor = 0;
|
|
110
|
+
for (const [wrongName, realName] of corrections) {
|
|
111
|
+
let index = result.indexOf(wrongName, cursor);
|
|
112
|
+
let length = wrongName.length;
|
|
113
|
+
if (index === -1) {
|
|
114
|
+
length = 0;
|
|
115
|
+
for (let i = wrongName.length - 1; i > 0; i--) {
|
|
116
|
+
// A prefix that is already correctly cased identifies nothing — the
|
|
117
|
+
// request would come back unchanged and the hint would repeat it
|
|
118
|
+
if (
|
|
119
|
+
result.endsWith(wrongName.slice(0, i)) &&
|
|
120
|
+
realName.slice(0, i) !== wrongName.slice(0, i)
|
|
121
|
+
) {
|
|
122
|
+
index = result.length - i;
|
|
123
|
+
length = i;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (length === 0) return undefined;
|
|
128
|
+
}
|
|
129
|
+
result =
|
|
130
|
+
result.slice(0, index) +
|
|
131
|
+
realName.slice(0, length) +
|
|
132
|
+
result.slice(index + length);
|
|
133
|
+
cursor = index + length;
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
module.exports.applyCaseCorrections = applyCaseCorrections;
|
|
139
|
+
module.exports.findCaseMismatch = findCaseMismatch;
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
9
|
-
/** @typedef {import("../Dependency").SourcePosition} SourcePosition */
|
|
8
|
+
/** @import { DependencyLocation, SourcePosition } from "../Dependency" */
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Returns formatted position.
|
package/lib/util/fs.js
CHANGED
|
@@ -9,9 +9,13 @@ const path = require("path");
|
|
|
9
9
|
const { ABSOLUTE_PATH_REGEXP } = require("./identifier");
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("../../declarations/WebpackOptions").WatchOptions} WatchOptions */
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
/**
|
|
13
|
+
* @import {
|
|
14
|
+
* Entry,
|
|
15
|
+
* OnlySafeTimeEntry,
|
|
16
|
+
* ExistenceOnlyTimeEntry
|
|
17
|
+
* } from "watchpack"
|
|
18
|
+
*/
|
|
15
19
|
|
|
16
20
|
/**
|
|
17
21
|
* Defines the i stats base type used by this module.
|
|
@@ -652,7 +656,16 @@ const mkdirpSync = (fs, p) => {
|
|
|
652
656
|
throw err;
|
|
653
657
|
}
|
|
654
658
|
mkdirpSync(fs, dir);
|
|
655
|
-
|
|
659
|
+
try {
|
|
660
|
+
fs.mkdirSync(p);
|
|
661
|
+
} catch (retryErr) {
|
|
662
|
+
// EEXIST: parent already created it; EISDIR: memfs/BSD for an
|
|
663
|
+
// existing dir such as the root "/" (#10544)
|
|
664
|
+
const code = /** @type {NodeJS.ErrnoException} */ (retryErr).code;
|
|
665
|
+
if (code !== "EEXIST" && code !== "EISDIR") {
|
|
666
|
+
throw retryErr;
|
|
667
|
+
}
|
|
668
|
+
}
|
|
656
669
|
return;
|
|
657
670
|
} else if (
|
|
658
671
|
/** @type {NodeJS.ErrnoException} */ (err).code === "EEXIST" ||
|
|
@@ -709,7 +722,11 @@ const lstatReadlinkAbsolute = (fs, p, callback) => {
|
|
|
709
722
|
}
|
|
710
723
|
if (err) return callback(err);
|
|
711
724
|
const value = /** @type {string} */ (target).toString();
|
|
712
|
-
|
|
725
|
+
// An absolute target must not be joined onto the link's directory (#21636)
|
|
726
|
+
callback(
|
|
727
|
+
null,
|
|
728
|
+
isAbsolute(value) ? value : join(fs, dirname(fs, p), value)
|
|
729
|
+
);
|
|
713
730
|
});
|
|
714
731
|
};
|
|
715
732
|
const doStat = () => {
|