@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/StringXor.js
CHANGED
|
@@ -17,6 +17,7 @@ const _0CharCode = "0".charCodeAt(0);
|
|
|
17
17
|
const _9CharCode = "9".charCodeAt(0);
|
|
18
18
|
const plusCharCode = "+".charCodeAt(0);
|
|
19
19
|
const hyphenCharCode = "-".charCodeAt(0);
|
|
20
|
+
const dotCharCode = ".".charCodeAt(0);
|
|
20
21
|
const colonCharCode = ":".charCodeAt(0);
|
|
21
22
|
const hashCharCode = "#".charCodeAt(0);
|
|
22
23
|
const queryCharCode = "?".charCodeAt(0);
|
|
@@ -46,7 +47,8 @@ function getScheme(specifier) {
|
|
|
46
47
|
(ch >= aUpperCaseCharCode && ch <= zUpperCaseCharCode) ||
|
|
47
48
|
(ch >= _0CharCode && ch <= _9CharCode) ||
|
|
48
49
|
ch === plusCharCode ||
|
|
49
|
-
ch === hyphenCharCode
|
|
50
|
+
ch === hyphenCharCode ||
|
|
51
|
+
ch === dotCharCode
|
|
50
52
|
) {
|
|
51
53
|
if (++i === specifier.length) return;
|
|
52
54
|
ch = specifier.charCodeAt(i);
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
9
|
-
/** @
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
8
|
+
/** @import Dependency from "../Dependency" */
|
|
9
|
+
/** @import Module from "../Module" */
|
|
10
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
11
|
+
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
12
12
|
|
|
13
13
|
/** @typedef {Range[]} IdRanges */
|
|
14
14
|
|
|
@@ -78,7 +78,11 @@ function trimIdsToThoseImported(ids, moduleGraph, dependency) {
|
|
|
78
78
|
);
|
|
79
79
|
for (let i = 0; i < ids.length; i++) {
|
|
80
80
|
if (i === 0 && ids[i] === "default") {
|
|
81
|
-
|
|
81
|
+
const nestedInfo = currentExportsInfo
|
|
82
|
+
.getExportInfo(ids[i])
|
|
83
|
+
.getNestedExportsInfo();
|
|
84
|
+
if (nestedInfo) currentExportsInfo = nestedInfo;
|
|
85
|
+
continue;
|
|
82
86
|
}
|
|
83
87
|
const exportInfo = currentExportsInfo.getExportInfo(ids[i]);
|
|
84
88
|
if (exportInfo.provided === false) {
|
package/lib/util/cleverMerge.js
CHANGED
|
@@ -100,7 +100,7 @@ const cachedSetProperty = (obj, property, value) => {
|
|
|
100
100
|
* @property {ByValues | undefined} byValues value depending on selector property, merged with base
|
|
101
101
|
*/
|
|
102
102
|
|
|
103
|
-
/** @typedef {(
|
|
103
|
+
/** @typedef {((...x: EXPECTED_ANY) => object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
|
|
104
104
|
|
|
105
105
|
/**
|
|
106
106
|
* Defines the parsed object static type used by this module.
|
package/lib/util/comparators.js
CHANGED
|
@@ -8,20 +8,17 @@
|
|
|
8
8
|
const { getFullModuleName } = require("../ids/IdHelpers");
|
|
9
9
|
const { compareRuntime } = require("./runtime");
|
|
10
10
|
|
|
11
|
-
/** @
|
|
12
|
-
/** @
|
|
13
|
-
/** @
|
|
14
|
-
/** @
|
|
15
|
-
/** @
|
|
16
|
-
/** @
|
|
17
|
-
/** @
|
|
18
|
-
/** @
|
|
19
|
-
/** @
|
|
20
|
-
/** @
|
|
21
|
-
/** @
|
|
22
|
-
/** @typedef {import("../Module")} Module */
|
|
23
|
-
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
24
|
-
/** @typedef {import("../dependencies/ModuleDependency")} ModuleDependency */
|
|
11
|
+
/** @import Chunk, { ChunkName, ChunkId } from "../Chunk" */
|
|
12
|
+
/** @import ChunkGraph, { ModuleId } from "../ChunkGraph" */
|
|
13
|
+
/** @import ChunkGroup from "../ChunkGroup" */
|
|
14
|
+
/** @import Compiler from "../Compiler" */
|
|
15
|
+
/** @import Dependency, { DependencyLocation } from "../Dependency" */
|
|
16
|
+
/** @import HarmonyImportSideEffectDependency from "../dependencies/HarmonyImportSideEffectDependency" */
|
|
17
|
+
/** @import HarmonyImportSpecifierDependency from "../dependencies/HarmonyImportSpecifierDependency" */
|
|
18
|
+
/** @import Module from "../Module" */
|
|
19
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
20
|
+
/** @import WebpackErrorType from "../errors/WebpackError" */
|
|
21
|
+
/** @import ModuleDependency from "../dependencies/ModuleDependency" */
|
|
25
22
|
|
|
26
23
|
/**
|
|
27
24
|
* Defines the dependency source order type used by this module.
|
|
@@ -501,6 +498,38 @@ const compareSelect = (getter, comparator) => {
|
|
|
501
498
|
return result;
|
|
502
499
|
};
|
|
503
500
|
|
|
501
|
+
// `compilation.errors`/`warnings`/`hints` are typed as plain `Error`s, so the
|
|
502
|
+
// webpack-specific fields are read through a cast.
|
|
503
|
+
const compareErrors = concatComparators(
|
|
504
|
+
compareSelect(
|
|
505
|
+
/**
|
|
506
|
+
* @param {Error} err error
|
|
507
|
+
* @returns {string} identifier of the module the error belongs to
|
|
508
|
+
*/
|
|
509
|
+
(err) => {
|
|
510
|
+
const { module } = /** @type {WebpackErrorType} */ (err);
|
|
511
|
+
return (module && module.identifier()) || "";
|
|
512
|
+
},
|
|
513
|
+
compareStringsNumeric
|
|
514
|
+
),
|
|
515
|
+
compareSelect(
|
|
516
|
+
/**
|
|
517
|
+
* @param {Error} err error
|
|
518
|
+
* @returns {DependencyLocation | undefined} location
|
|
519
|
+
*/
|
|
520
|
+
(err) => /** @type {WebpackErrorType} */ (err).loc,
|
|
521
|
+
compareLocations
|
|
522
|
+
),
|
|
523
|
+
compareSelect(
|
|
524
|
+
/**
|
|
525
|
+
* @param {Error} err error
|
|
526
|
+
* @returns {string} message
|
|
527
|
+
*/
|
|
528
|
+
(err) => `${err.message}`,
|
|
529
|
+
compareStringsNumeric
|
|
530
|
+
)
|
|
531
|
+
);
|
|
532
|
+
|
|
504
533
|
/** @type {WeakMap<Comparator<EXPECTED_ANY>, Comparator<Iterable<EXPECTED_ANY>>>} */
|
|
505
534
|
const compareIteratorsCache = new WeakMap();
|
|
506
535
|
|
|
@@ -629,6 +658,8 @@ module.exports.compareChunksById = (a, b) =>
|
|
|
629
658
|
compareIds(/** @type {ChunkId} */ (a.id), /** @type {ChunkId} */ (b.id));
|
|
630
659
|
module.exports.compareChunksNatural = compareChunksNatural;
|
|
631
660
|
|
|
661
|
+
module.exports.compareErrors = compareErrors;
|
|
662
|
+
|
|
632
663
|
module.exports.compareIds = compareIds;
|
|
633
664
|
|
|
634
665
|
module.exports.compareIterables = compareIterables;
|
package/lib/util/concatenate.js
CHANGED
|
@@ -7,41 +7,199 @@
|
|
|
7
7
|
|
|
8
8
|
const Template = require("../Template");
|
|
9
9
|
|
|
10
|
-
/** @
|
|
11
|
-
/** @
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
/** @import { Identifier, Node } from "estree" */
|
|
11
|
+
/** @import { Optimization } from "../../declarations/WebpackOptions" */
|
|
12
|
+
/**
|
|
13
|
+
* @import {
|
|
14
|
+
* Scope,
|
|
15
|
+
* Reference,
|
|
16
|
+
* Variable
|
|
17
|
+
* } from "../javascript/JavascriptModulesPlugin"
|
|
18
|
+
*/
|
|
19
|
+
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
20
|
+
/** @typedef {Node & { start?: number, end?: number }} PositionedNode */
|
|
21
|
+
/** @typedef {Exclude<keyof Node, "range" | "loc" | "leadingComments" | "trailingComments">} ChildKey */
|
|
15
22
|
/** @typedef {Set<string>} UsedNames */
|
|
16
23
|
|
|
17
24
|
const DEFAULT_EXPORT = "__WEBPACK_DEFAULT_EXPORT__";
|
|
18
25
|
const NAMESPACE_OBJECT_EXPORT = "__WEBPACK_NAMESPACE_OBJECT__";
|
|
19
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Whether CommonJS modules and require edges take part in concatenation.
|
|
29
|
+
* @param {Optimization["concatenateModules"]} concatenateModules the optimization.concatenateModules option
|
|
30
|
+
* @returns {boolean} true when CommonJS concatenation is enabled
|
|
31
|
+
*/
|
|
32
|
+
const isCommonJsConcatenationEnabled = (concatenateModules) =>
|
|
33
|
+
typeof concatenateModules === "object"
|
|
34
|
+
? concatenateModules.commonjs !== false
|
|
35
|
+
: concatenateModules === true;
|
|
36
|
+
|
|
37
|
+
/** @type {WeakMap<Scope, Map<Identifier, Variable>>} */
|
|
38
|
+
const sharedInnerBindingsCache = new WeakMap();
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The inner bindings sharing a declaring identifier with their own scope — a
|
|
42
|
+
* class name binds twice. Indexed once per scope; per binding it is quadratic.
|
|
43
|
+
* @param {Scope} scope the scope whose children to index
|
|
44
|
+
* @returns {Map<Identifier, Variable>} the inner binding sharing each identifier
|
|
45
|
+
*/
|
|
46
|
+
const getSharedInnerBindings = (scope) => {
|
|
47
|
+
const cached = sharedInnerBindingsCache.get(scope);
|
|
48
|
+
if (cached !== undefined) return cached;
|
|
49
|
+
/** @type {Map<Identifier, Variable>} */
|
|
50
|
+
const shared = new Map();
|
|
51
|
+
/** @type {Set<Identifier>} */
|
|
52
|
+
const declared = new Set();
|
|
53
|
+
for (const variable of scope.variables) {
|
|
54
|
+
for (const identifier of variable.identifiers) declared.add(identifier);
|
|
55
|
+
}
|
|
56
|
+
if (declared.size !== 0) {
|
|
57
|
+
for (const child of scope.childScopes) {
|
|
58
|
+
for (const innerVariable of child.variables) {
|
|
59
|
+
for (const identifier of innerVariable.identifiers) {
|
|
60
|
+
if (declared.has(identifier)) shared.set(identifier, innerVariable);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
sharedInnerBindingsCache.set(scope, shared);
|
|
66
|
+
return shared;
|
|
67
|
+
};
|
|
68
|
+
|
|
20
69
|
/**
|
|
21
70
|
* Gets all references.
|
|
22
71
|
* @param {Variable} variable variable
|
|
23
72
|
* @returns {Reference[]} references
|
|
24
73
|
*/
|
|
25
74
|
const getAllReferences = (variable) => {
|
|
75
|
+
// the inner binding of `class Foo { t() { Foo } }` holds references to the
|
|
76
|
+
// same name, and renaming has to move them too
|
|
77
|
+
const shared = getSharedInnerBindings(variable.scope);
|
|
78
|
+
if (shared.size === 0) return variable.references;
|
|
26
79
|
let set = variable.references;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
80
|
+
/** @type {Variable | undefined} */
|
|
81
|
+
let last;
|
|
82
|
+
for (const identifier of variable.identifiers) {
|
|
83
|
+
const innerVariable = shared.get(identifier);
|
|
84
|
+
if (innerVariable === undefined || innerVariable === last) continue;
|
|
85
|
+
last = innerVariable;
|
|
86
|
+
// copy-on-write to keep the common no-match case allocation-free
|
|
87
|
+
if (set === variable.references) set = [...set];
|
|
88
|
+
for (const reference of innerVariable.references) set.push(reference);
|
|
89
|
+
}
|
|
90
|
+
return set;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Tests whether a node covers the searched range. `start`/`end` are read before
|
|
95
|
+
* `range`, because webpack's parser serves `range` from a lazy getter that
|
|
96
|
+
* allocates an array and transitions the node's shape on first access — reading
|
|
97
|
+
* it while walking would pay that for most nodes of the ast.
|
|
98
|
+
* @param {PositionedNode} node node
|
|
99
|
+
* @param {number} start start of the searched range
|
|
100
|
+
* @param {number} end end of the searched range
|
|
101
|
+
* @returns {boolean} whether the node covers the range
|
|
102
|
+
*/
|
|
103
|
+
const coversRange = (node, start, end) => {
|
|
104
|
+
const nodeStart = node.start;
|
|
105
|
+
if (typeof nodeStart === "number") {
|
|
106
|
+
return nodeStart <= start && /** @type {number} */ (node.end) >= end;
|
|
107
|
+
}
|
|
108
|
+
const range = node.range;
|
|
109
|
+
return range !== undefined && range[0] <= start && range[1] >= end;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Returns the single sibling covering the searched range.
|
|
114
|
+
* @param {Node[]} items sibling nodes
|
|
115
|
+
* @param {number} start start of the searched range
|
|
116
|
+
* @param {number} end end of the searched range
|
|
117
|
+
* @returns {Node | undefined} covering sibling
|
|
118
|
+
*/
|
|
119
|
+
const findCoveringItem = (items, start, end) => {
|
|
120
|
+
// sibling ranges are ordered and disjoint; binary search the container
|
|
121
|
+
let low = 0;
|
|
122
|
+
let high = items.length - 1;
|
|
123
|
+
while (low <= high) {
|
|
124
|
+
const middle = (low + high) >> 1;
|
|
125
|
+
const item = /** @type {PositionedNode} */ (items[middle]);
|
|
126
|
+
/** @type {number | undefined} */
|
|
127
|
+
let itemStart;
|
|
128
|
+
/** @type {number | undefined} */
|
|
129
|
+
let itemEnd;
|
|
130
|
+
if (item) {
|
|
131
|
+
itemStart = item.start;
|
|
132
|
+
if (typeof itemStart === "number") {
|
|
133
|
+
itemEnd = item.end;
|
|
134
|
+
} else {
|
|
135
|
+
const range = item.range;
|
|
136
|
+
if (range === undefined) {
|
|
137
|
+
itemStart = undefined;
|
|
138
|
+
} else {
|
|
139
|
+
itemStart = range[0];
|
|
140
|
+
itemEnd = range[1];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (itemStart === undefined) {
|
|
145
|
+
// holes or range-less nodes: scan the remaining window linearly
|
|
146
|
+
for (let i = low; i <= high; i++) {
|
|
147
|
+
const candidate = items[i];
|
|
148
|
+
if (candidate && coversRange(candidate, start, end)) return candidate;
|
|
37
149
|
}
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
if (itemStart > start) {
|
|
153
|
+
high = middle - 1;
|
|
154
|
+
} else if (start >= /** @type {number} */ (itemEnd)) {
|
|
155
|
+
low = middle + 1;
|
|
156
|
+
} else {
|
|
157
|
+
return /** @type {number} */ (itemEnd) >= end ? item : undefined;
|
|
38
158
|
}
|
|
39
159
|
}
|
|
40
|
-
return
|
|
160
|
+
return undefined;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Collects the ancestors of `node` below `parent`, innermost first.
|
|
165
|
+
* Keeps scanning after a covering child turns out not to contain `node`:
|
|
166
|
+
* a shorthand `{ a }` holds two distinct identifiers with the same range.
|
|
167
|
+
* @param {Node} parent node to search in
|
|
168
|
+
* @param {number} start start of the searched range
|
|
169
|
+
* @param {number} end end of the searched range
|
|
170
|
+
* @param {Node} node node to find
|
|
171
|
+
* @param {Node[]} path collected ancestors
|
|
172
|
+
* @returns {boolean} whether the node was found
|
|
173
|
+
*/
|
|
174
|
+
const collectPathInNode = (parent, start, end, node, path) => {
|
|
175
|
+
for (const key in parent) {
|
|
176
|
+
// sit in front of the child keys on every node and never hold one, so
|
|
177
|
+
// skipping them by name is what keeps the per-level scan short
|
|
178
|
+
if (key === "type" || key === "start" || key === "end") continue;
|
|
179
|
+
const value = parent[/** @type {ChildKey} */ (key)];
|
|
180
|
+
if (value === null || typeof value !== "object") continue;
|
|
181
|
+
/** @type {Node | undefined} */
|
|
182
|
+
let child;
|
|
183
|
+
if (Array.isArray(value)) {
|
|
184
|
+
// `range` is a number pair on parsers that own the property
|
|
185
|
+
if (key === "range") continue;
|
|
186
|
+
child = findCoveringItem(value, start, end);
|
|
187
|
+
} else if (coversRange(value, start, end)) {
|
|
188
|
+
child = value;
|
|
189
|
+
}
|
|
190
|
+
if (
|
|
191
|
+
child !== undefined &&
|
|
192
|
+
(child === node || collectPathInNode(child, start, end, node, path))
|
|
193
|
+
) {
|
|
194
|
+
path.push(child);
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return false;
|
|
41
199
|
};
|
|
42
200
|
|
|
43
201
|
/**
|
|
44
|
-
* Returns
|
|
202
|
+
* Returns the ancestors of `node` up to (but excluding) `ast`, innermost first.
|
|
45
203
|
* @param {Node | Node[]} ast ast
|
|
46
204
|
* @param {Node} node node
|
|
47
205
|
* @returns {undefined | Node[]} result
|
|
@@ -51,69 +209,25 @@ const getPathInAst = (ast, node) => {
|
|
|
51
209
|
return [];
|
|
52
210
|
}
|
|
53
211
|
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
* @returns {Node[] | undefined} result
|
|
60
|
-
*/
|
|
61
|
-
const enterNode = (n) => {
|
|
62
|
-
if (!n) return;
|
|
63
|
-
const r = n.range;
|
|
64
|
-
if (r && r[0] <= nr[0] && r[1] >= nr[1]) {
|
|
65
|
-
const path = getPathInAst(n, node);
|
|
66
|
-
if (path) {
|
|
67
|
-
path.push(n);
|
|
68
|
-
return path;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
};
|
|
212
|
+
const nodeRange = /** @type {Range} */ (node.range);
|
|
213
|
+
const start = nodeRange[0];
|
|
214
|
+
const end = nodeRange[1];
|
|
215
|
+
/** @type {Node[]} */
|
|
216
|
+
const path = [];
|
|
72
217
|
|
|
73
218
|
if (Array.isArray(ast)) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const mid = (lo + hi) >> 1;
|
|
79
|
-
const item = ast[mid];
|
|
80
|
-
const r = item && item.range;
|
|
81
|
-
if (!r) {
|
|
82
|
-
// holes or range-less nodes: scan the remaining window linearly
|
|
83
|
-
for (let i = lo; i <= hi; i++) {
|
|
84
|
-
const enterResult = enterNode(ast[i]);
|
|
85
|
-
if (enterResult !== undefined) return enterResult;
|
|
86
|
-
}
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
if (r[0] > nr[0]) {
|
|
90
|
-
hi = mid - 1;
|
|
91
|
-
} else if (nr[0] >= r[1]) {
|
|
92
|
-
lo = mid + 1;
|
|
93
|
-
} else {
|
|
94
|
-
return r[1] >= nr[1] ? enterNode(item) : undefined;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
} else if (ast && typeof ast === "object") {
|
|
98
|
-
const keys =
|
|
99
|
-
/** @type {(keyof Node)[]} */
|
|
100
|
-
(Object.keys(ast));
|
|
101
|
-
for (let i = 0; i < keys.length; i++) {
|
|
102
|
-
// We are making the faster check in `enterNode` using `n.range`
|
|
103
|
-
const value =
|
|
104
|
-
ast[
|
|
105
|
-
/** @type {Exclude<keyof Node, "range" | "loc" | "leadingComments" | "trailingComments">} */
|
|
106
|
-
(keys[i])
|
|
107
|
-
];
|
|
108
|
-
if (Array.isArray(value)) {
|
|
109
|
-
const pathResult = getPathInAst(value, node);
|
|
110
|
-
if (pathResult !== undefined) return pathResult;
|
|
111
|
-
} else if (value && typeof value === "object") {
|
|
112
|
-
const enterResult = enterNode(value);
|
|
113
|
-
if (enterResult !== undefined) return enterResult;
|
|
114
|
-
}
|
|
219
|
+
const item = findCoveringItem(ast, start, end);
|
|
220
|
+
if (item === undefined) return undefined;
|
|
221
|
+
if (item !== node && !collectPathInNode(item, start, end, node, path)) {
|
|
222
|
+
return undefined;
|
|
115
223
|
}
|
|
224
|
+
path.push(item);
|
|
225
|
+
return path;
|
|
116
226
|
}
|
|
227
|
+
|
|
228
|
+
if (!ast || typeof ast !== "object") return undefined;
|
|
229
|
+
|
|
230
|
+
return collectPathInNode(ast, start, end, node, path) ? path : undefined;
|
|
117
231
|
};
|
|
118
232
|
|
|
119
233
|
/** @type {Map<string, string[]>} */
|
|
@@ -210,11 +324,21 @@ const addScopeSymbols = (s, nameSet, scopeSet1, scopeSet2) => {
|
|
|
210
324
|
}
|
|
211
325
|
};
|
|
212
326
|
|
|
327
|
+
// Declared by the chunk bootstrap in the scope module code is hoisted into.
|
|
328
|
+
// Hit when a webpack bundle is bundled again, since its output declares exactly
|
|
329
|
+
// these: the `const` one then fails to parse, the `var` one silently clobbers
|
|
330
|
+
// the module table. CompatibilityPlugin renames the other two runtime names.
|
|
331
|
+
const CHUNK_RUNTIME_DECLARATIONS = new Set([
|
|
332
|
+
"__webpack_modules__",
|
|
333
|
+
"__webpack_module_cache__"
|
|
334
|
+
]);
|
|
335
|
+
|
|
213
336
|
const RESERVED_NAMES = new Set(
|
|
214
337
|
[
|
|
215
338
|
// internal names (should always be renamed)
|
|
216
339
|
DEFAULT_EXPORT,
|
|
217
340
|
NAMESPACE_OBJECT_EXPORT,
|
|
341
|
+
...CHUNK_RUNTIME_DECLARATIONS,
|
|
218
342
|
|
|
219
343
|
// keywords
|
|
220
344
|
"abstract,arguments,async,await,boolean,break,byte,case,catch,char,class,const,continue",
|
|
@@ -277,6 +401,7 @@ const getUsedNamesInScopeInfo = (usedNamesInScopeInfo, module, id) => {
|
|
|
277
401
|
};
|
|
278
402
|
|
|
279
403
|
module.exports = {
|
|
404
|
+
CHUNK_RUNTIME_DECLARATIONS,
|
|
280
405
|
DEFAULT_EXPORT,
|
|
281
406
|
NAMESPACE_OBJECT_EXPORT,
|
|
282
407
|
RESERVED_NAMES,
|
|
@@ -284,5 +409,6 @@ module.exports = {
|
|
|
284
409
|
findNewName,
|
|
285
410
|
getAllReferences,
|
|
286
411
|
getPathInAst,
|
|
287
|
-
getUsedNamesInScopeInfo
|
|
412
|
+
getUsedNamesInScopeInfo,
|
|
413
|
+
isCommonJsConcatenationEnabled
|
|
288
414
|
};
|
package/lib/util/conventions.js
CHANGED
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* @import {
|
|
10
|
+
* CssGeneratorExportsConvention
|
|
11
|
+
* } from "../../declarations/WebpackOptions"
|
|
12
|
+
*/
|
|
9
13
|
// Copy from css-loader
|
|
10
14
|
/**
|
|
11
15
|
* Preserve camel case.
|
|
@@ -111,7 +115,11 @@ module.exports.cssExportConvention = (input, convention) => {
|
|
|
111
115
|
const set = new Set();
|
|
112
116
|
if (typeof convention === "function") {
|
|
113
117
|
const result = convention(input);
|
|
114
|
-
|
|
118
|
+
/**
|
|
119
|
+
* @param {string} name name returned by the convention function
|
|
120
|
+
* @returns {void}
|
|
121
|
+
*/
|
|
122
|
+
const validate = (name) => {
|
|
115
123
|
if (typeof name !== "string" || name.length === 0) {
|
|
116
124
|
throw new Error(
|
|
117
125
|
`exportsConvention function must return a non-empty string or an array of non-empty strings, got ${safeStringify(result)}`
|
package/lib/util/createHash.js
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
/** @
|
|
9
|
-
/** @
|
|
8
|
+
/** @import Hash from "./Hash" */
|
|
9
|
+
/** @import { HashFunction } from "../../declarations/WebpackOptions" */
|
|
10
10
|
|
|
11
11
|
/** @type {typeof import("crypto") | undefined} */
|
|
12
12
|
let crypto;
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
const memoize = require("./memoize");
|
|
8
|
-
|
|
9
|
-
const getCompilation = memoize(() => require("../Compilation"));
|
|
10
|
-
|
|
11
7
|
/**
|
|
12
8
|
* @template T
|
|
13
9
|
* @param {() => T} createHooks factory that returns a fresh hooks object
|
|
@@ -17,10 +13,15 @@ const createHooksRegistry = (createHooks) => {
|
|
|
17
13
|
/** @type {WeakMap<import("../Compilation"), T>} */
|
|
18
14
|
const map = new WeakMap();
|
|
19
15
|
return (compilation) => {
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
let hooks = map.get(compilation);
|
|
17
|
+
if (hooks === undefined) {
|
|
18
|
+
// validated once per compilation — this runs on every render and
|
|
19
|
+
// codegen. Matched by class name, not `instanceof`: a compilation from
|
|
20
|
+
// another webpack copy has to pass too, and importing `Compilation`
|
|
21
|
+
// here cycles.
|
|
22
22
|
const candidate =
|
|
23
|
-
/** @type {{ constructor?: { name: string } } | null} */
|
|
23
|
+
/** @type {{ constructor?: { name: string } } | null} */
|
|
24
|
+
(compilation);
|
|
24
25
|
if (
|
|
25
26
|
!candidate ||
|
|
26
27
|
!candidate.constructor ||
|
|
@@ -30,9 +31,6 @@ const createHooksRegistry = (createHooks) => {
|
|
|
30
31
|
"The 'compilation' argument must be an instance of Compilation"
|
|
31
32
|
);
|
|
32
33
|
}
|
|
33
|
-
}
|
|
34
|
-
let hooks = map.get(compilation);
|
|
35
|
-
if (hooks === undefined) {
|
|
36
34
|
hooks = createHooks();
|
|
37
35
|
map.set(compilation, hooks);
|
|
38
36
|
}
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* while richer call sites can pass arrays of segments.
|
|
14
14
|
*
|
|
15
15
|
* TODO move this encoder into `webpack-sources` and replace the body of this
|
|
16
|
-
* file with re-exports. The public shape (`encodeVLQ`, `
|
|
17
|
-
* `MappingSegment`, `LineMappings`) is intended to
|
|
18
|
-
* upstream so call sites don't have to change.
|
|
16
|
+
* file with re-exports. The public shape (`encodeVLQ`, `decodeVLQ`,
|
|
17
|
+
* `encodeMappings(lines)`, `MappingSegment`, `LineMappings`) is intended to
|
|
18
|
+
* match what would land upstream so call sites don't have to change.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
21
|
const VLQ_BASE64 =
|
|
@@ -38,6 +38,27 @@ const encodeVLQ = (value) => {
|
|
|
38
38
|
return result;
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Decode one base64 VLQ value per the source-map V3 spec.
|
|
43
|
+
* @param {string} mappings a VLQ encoded `mappings` string
|
|
44
|
+
* @param {number} start index of the value's first character
|
|
45
|
+
* @returns {{ value: number, end: number }} the decoded value and the index just past it; `end` equals `start` when there is no valid value at `start`
|
|
46
|
+
*/
|
|
47
|
+
const decodeVLQ = (mappings, start) => {
|
|
48
|
+
let value = 0;
|
|
49
|
+
let shift = 0;
|
|
50
|
+
let index = start;
|
|
51
|
+
let digit;
|
|
52
|
+
do {
|
|
53
|
+
digit = index < mappings.length ? VLQ_BASE64.indexOf(mappings[index]) : -1;
|
|
54
|
+
if (digit < 0) return { value: 0, end: start };
|
|
55
|
+
value += (digit & 0x1f) << shift;
|
|
56
|
+
shift += 5;
|
|
57
|
+
index++;
|
|
58
|
+
} while (digit & 0x20);
|
|
59
|
+
return { value: value & 1 ? -(value >>> 1) : value >>> 1, end: index };
|
|
60
|
+
};
|
|
61
|
+
|
|
41
62
|
/**
|
|
42
63
|
* @typedef {object} MappingSegment
|
|
43
64
|
* @property {number=} generatedColumn 0-based generated column (defaults to 0)
|
|
@@ -114,5 +135,6 @@ const encodeMappings = (lines) => {
|
|
|
114
135
|
return encodedLines.join(";");
|
|
115
136
|
};
|
|
116
137
|
|
|
138
|
+
module.exports.decodeVLQ = decodeVLQ;
|
|
117
139
|
module.exports.encodeMappings = encodeMappings;
|
|
118
140
|
module.exports.encodeVLQ = encodeVLQ;
|