@depup/webpack 5.109.0-depup.0 → 5.110.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/bin/webpack.js +12 -0
- package/changes.json +10 -10
- 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 +43 -32
- package/lib/ChunkGroup.js +7 -7
- package/lib/ChunkTemplate.js +35 -44
- package/lib/CircularModulesPlugin.js +205 -28
- package/lib/CleanPlugin.js +15 -16
- package/lib/CodeGenerationResults.js +11 -8
- package/lib/CompatibilityPlugin.js +38 -7
- package/lib/Compilation.js +709 -414
- package/lib/Compiler.js +69 -42
- package/lib/ConcatenationScope.js +117 -8
- package/lib/ConditionalInitFragment.js +3 -3
- package/lib/ConstPlugin.js +13 -11
- package/lib/ContextExclusionPlugin.js +1 -1
- package/lib/ContextModule.js +146 -54
- package/lib/ContextModuleFactory.js +46 -14
- package/lib/ContextReplacementPlugin.js +12 -14
- package/lib/DefinePlugin.js +168 -57
- package/lib/DependenciesBlock.js +9 -6
- package/lib/Dependency.js +36 -16
- package/lib/DependencyTemplate.js +11 -12
- package/lib/DependencyTemplates.js +3 -3
- package/lib/DotenvPlugin.js +50 -13
- package/lib/DynamicEntryPlugin.js +8 -4
- package/lib/EntryOptionPlugin.js +8 -4
- package/lib/EntryPlugin.js +2 -2
- package/lib/Entrypoint.js +6 -2
- package/lib/EnvironmentPlugin.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +8 -4
- package/lib/EvalSourceMapDevToolPlugin.js +15 -8
- package/lib/ExportsInfo.js +123 -19
- package/lib/ExportsInfoApiPlugin.js +2 -4
- package/lib/ExternalModule.js +242 -84
- package/lib/ExternalModuleFactoryPlugin.js +97 -38
- package/lib/ExternalsPlugin.js +10 -6
- package/lib/FileSystemInfo.js +116 -42
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
- package/lib/FlagDependencyExportsPlugin.js +76 -19
- package/lib/FlagDependencyUsagePlugin.js +63 -57
- 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 +28 -36
- 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 +22 -6
- 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 +221 -156
- package/lib/NormalModuleFactory.js +563 -112
- 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 +346 -256
- package/lib/RuntimeTemplate.js +2792 -352
- package/lib/SelfModuleFactory.js +7 -3
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
- package/lib/SourceMapDevToolPlugin.js +30 -20
- package/lib/Stats.js +3 -4
- package/lib/Template.js +55 -25
- package/lib/TemplatedPathPlugin.js +96 -14
- package/lib/UseStrictPlugin.js +4 -6
- package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
- package/lib/WarnDeprecatedOptionPlugin.js +1 -1
- package/lib/WarnNoModeSetPlugin.js +1 -1
- package/lib/WatchIgnorePlugin.js +8 -6
- package/lib/Watching.js +8 -8
- package/lib/WebpackIsIncludedPlugin.js +2 -4
- package/lib/WebpackOptionsApply.js +308 -18
- package/lib/WebpackOptionsDefaulter.js +6 -2
- package/lib/asset/AssetBytesGenerator.js +12 -10
- package/lib/asset/AssetBytesParser.js +2 -4
- package/lib/asset/AssetGenerator.js +188 -95
- package/lib/asset/AssetModule.js +7 -3
- package/lib/asset/AssetModulesPlugin.js +110 -38
- package/lib/asset/AssetParser.js +9 -7
- package/lib/asset/AssetSourceGenerator.js +60 -13
- package/lib/asset/AssetSourceParser.js +2 -4
- package/lib/asset/RawDataUrlModule.js +24 -16
- package/lib/asset/WebManifestGenerator.js +8 -10
- package/lib/asset/WebManifestParser.js +24 -10
- package/lib/async-modules/AsyncModuleHelpers.js +2 -2
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
- package/lib/async-modules/isGeneratorLowered.js +4 -4
- package/lib/buildChunkGraph.js +36 -27
- package/lib/bun/BunTargetPlugin.js +1 -1
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
- package/lib/cache/AddManagedPathsPlugin.js +1 -1
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +18 -10
- package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
- package/lib/cache/PackFileCacheStrategy.js +289 -28
- 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 +282 -81
- package/lib/config/defineConfig.js +10 -2
- package/lib/config/getClaimedAssetTypes.js +65 -0
- package/lib/config/normalization.js +36 -16
- package/lib/config/target.js +46 -3
- package/lib/container/ContainerEntryDependency.js +1 -1
- package/lib/container/ContainerEntryModule.js +24 -15
- package/lib/container/ContainerEntryModuleFactory.js +7 -3
- package/lib/container/ContainerPlugin.js +9 -10
- package/lib/container/ContainerReferencePlugin.js +6 -2
- package/lib/container/FallbackDependency.js +1 -1
- package/lib/container/FallbackModule.js +24 -17
- package/lib/container/FallbackModuleFactory.js +7 -3
- package/lib/container/HoistContainerReferencesPlugin.js +53 -66
- package/lib/container/ModuleFederationPlugin.js +7 -18
- 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 +178 -44
- package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
- package/lib/css/CssLoadingRuntimeModule.js +82 -36
- package/lib/css/CssModule.js +10 -7
- package/lib/css/CssModulesPlugin.js +197 -106
- package/lib/css/CssParser.js +1248 -618
- package/lib/css/CssServerStylesRuntimeModule.js +54 -0
- package/lib/css/cssMinify.js +168 -0
- package/lib/css/data.js +5324 -0
- package/lib/css/syntax.js +10396 -952
- 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 +140 -45
- package/lib/dependencies/CommonJsExportsDependency.js +53 -49
- package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
- package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
- package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
- package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
- package/lib/dependencies/CommonJsPlugin.js +35 -6
- package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
- package/lib/dependencies/CommonJsRequireDependency.js +156 -27
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
- package/lib/dependencies/ConstDependency.js +8 -9
- package/lib/dependencies/ContextDependency.js +12 -8
- package/lib/dependencies/ContextDependencyHelpers.js +14 -9
- package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
- package/lib/dependencies/ContextElementDependency.js +31 -12
- package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
- package/lib/dependencies/CssIcssExportDependency.js +56 -28
- package/lib/dependencies/CssIcssImportDependency.js +17 -13
- package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
- package/lib/dependencies/CssImportDependency.js +18 -9
- package/lib/dependencies/CssUrlDependency.js +17 -13
- package/lib/dependencies/DllEntryDependency.js +1 -1
- package/lib/dependencies/DynamicExports.js +2 -2
- package/lib/dependencies/ExportBindingInitFragment.js +36 -9
- package/lib/dependencies/ExportsInfoDependency.js +7 -8
- package/lib/dependencies/ExternalModuleDependency.js +9 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
- package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
- package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
- 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 +28 -20
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
- package/lib/dependencies/HarmonyImportGuard.js +21 -30
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
- package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
- package/lib/dependencies/HtmlEntryDependency.js +37 -29
- package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
- package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
- package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
- package/lib/dependencies/HtmlSourceDependency.js +22 -14
- package/lib/dependencies/ImportContextDependency.js +2 -2
- package/lib/dependencies/ImportDependency.js +24 -20
- package/lib/dependencies/ImportEagerDependency.js +6 -9
- package/lib/dependencies/ImportMetaContextDependency.js +2 -2
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
- package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
- package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +154 -71
- package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
- package/lib/dependencies/ImportParserPlugin.js +49 -35
- package/lib/dependencies/ImportPhase.js +12 -5
- package/lib/dependencies/ImportPlugin.js +7 -3
- package/lib/dependencies/ImportWeakDependency.js +6 -9
- package/lib/dependencies/JsonExportsDependency.js +11 -7
- package/lib/dependencies/LoaderDependency.js +2 -2
- package/lib/dependencies/LoaderImportDependency.js +2 -2
- package/lib/dependencies/LoaderPlugin.js +11 -7
- package/lib/dependencies/LocalModuleDependency.js +5 -5
- package/lib/dependencies/LocalModulesHelpers.js +1 -1
- package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
- package/lib/dependencies/ModuleDependency.js +9 -6
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
- package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
- package/lib/dependencies/NullDependency.js +3 -3
- package/lib/dependencies/ProvidedDependency.js +14 -10
- package/lib/dependencies/PureExpressionDependency.js +9 -10
- package/lib/dependencies/RequireContextDependency.js +2 -2
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
- package/lib/dependencies/RequireContextPlugin.js +8 -4
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
- package/lib/dependencies/RequireEnsureDependency.js +8 -7
- package/lib/dependencies/RequireEnsurePlugin.js +7 -3
- package/lib/dependencies/RequireHeaderDependency.js +51 -12
- package/lib/dependencies/RequireIncludeDependency.js +6 -6
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
- package/lib/dependencies/RequireIncludePlugin.js +7 -3
- package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +4 -4
- package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
- package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
- package/lib/dependencies/StaticExportsDependency.js +2 -2
- package/lib/dependencies/SystemPlugin.js +10 -6
- package/lib/dependencies/SystemRuntimeModule.js +10 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
- package/lib/dependencies/URLContextDependency.js +2 -2
- package/lib/dependencies/URLDependency.js +110 -64
- package/lib/dependencies/URLPlugin.js +7 -3
- package/lib/dependencies/UnsupportedDependency.js +4 -4
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
- package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
- package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
- package/lib/dependencies/WorkerDependency.js +28 -22
- package/lib/dependencies/WorkletDependency.js +15 -14
- package/lib/dependencies/getFunctionExpression.js +8 -4
- package/lib/dependencies/processExportInfo.js +5 -5
- package/lib/dll/DelegatedModule.js +34 -22
- package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
- package/lib/dll/DelegatedPlugin.js +2 -2
- package/lib/dll/DllEntryPlugin.js +2 -2
- package/lib/dll/DllModule.js +22 -15
- package/lib/dll/DllModuleFactory.js +7 -3
- package/lib/dll/DllPlugin.js +7 -5
- package/lib/dll/DllReferencePlugin.js +10 -7
- package/lib/dll/LibManifestPlugin.js +5 -5
- package/lib/electron/ElectronTargetPlugin.js +53 -49
- package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
- package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
- package/lib/errors/BroadContextsWarning.js +43 -0
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/errors/CacheEffectivenessWarning.js +55 -0
- package/lib/errors/ChunkRenderError.js +1 -1
- package/lib/errors/CircularDependenciesWarning.js +38 -0
- package/lib/errors/CodeGenerationError.js +1 -1
- package/lib/errors/CommentCompilationWarning.js +1 -1
- package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
- package/lib/errors/DuplicateModulesWarning.js +45 -0
- package/lib/errors/DynamicExportsWarning.js +30 -0
- package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
- package/lib/errors/EntrypointOverlapWarning.js +45 -0
- package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
- package/lib/errors/EvalUsageWarning.js +28 -0
- package/lib/errors/HookWebpackError.js +5 -5
- package/lib/errors/HotspotsWarning.js +57 -0
- package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
- package/lib/errors/InlinedAssetsWarning.js +36 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
- package/lib/errors/LargeModulesWarning.js +45 -0
- package/lib/errors/LegacyJavascriptWarning.js +48 -0
- package/lib/errors/MissingSideEffectsWarning.js +36 -0
- package/lib/errors/MixedExportsWarning.js +41 -0
- package/lib/errors/ModuleDependencyError.js +13 -16
- package/lib/errors/ModuleDependencyWarning.js +5 -15
- package/lib/errors/ModuleHashingError.js +1 -1
- package/lib/errors/ModuleNotFoundError.js +2 -2
- package/lib/errors/ModuleParseError.js +1 -2
- package/lib/errors/ModuleRestoreError.js +1 -1
- package/lib/errors/ModuleStoreError.js +1 -1
- package/lib/errors/NodeStuffInWebError.js +1 -1
- package/lib/errors/OsDependentRuleWarning.js +31 -0
- package/lib/errors/PureAnnotationsWarning.js +36 -0
- package/lib/errors/RedundantDynamicImportWarning.js +31 -0
- package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
- package/lib/errors/SplitChunksCappedWarning.js +41 -0
- package/lib/errors/TinyChunksWarning.js +40 -0
- package/lib/errors/TopLevelThisWarning.js +34 -0
- package/lib/errors/UnsplitVendorsWarning.js +42 -0
- package/lib/errors/UnsupportedFeatureWarning.js +1 -1
- package/lib/errors/UnusedAliasesWarning.js +29 -0
- package/lib/errors/UnusedDefinesWarning.js +29 -0
- package/lib/errors/UnusedExternalsWarning.js +29 -0
- package/lib/errors/UnusedReexportsWarning.js +42 -0
- package/lib/errors/UnusedRuleWarning.js +29 -0
- package/lib/errors/WebpackError.js +9 -5
- package/lib/errors/deriveStackFromNestedError.js +90 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
- package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
- 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 +28 -10
- package/lib/hmr/parserHooks.js +56 -0
- package/lib/html/HtmlGenerator.js +299 -79
- package/lib/html/HtmlModule.js +7 -3
- package/lib/html/HtmlModulesPlugin.js +312 -174
- 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 +7819 -3331
- 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 +31 -18
- 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 +181 -162
- package/lib/javascript/JavascriptParser.js +291 -112
- 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 +3403 -300
- package/lib/json/JsonData.js +8 -4
- package/lib/json/JsonGenerator.js +38 -16
- package/lib/json/JsonModule.js +7 -3
- package/lib/json/JsonModulesPlugin.js +1 -1
- package/lib/json/JsonParser.js +5 -6
- package/lib/library/AbstractLibraryPlugin.js +20 -14
- package/lib/library/AmdLibraryPlugin.js +11 -7
- package/lib/library/AssignLibraryPlugin.js +19 -13
- package/lib/library/EnableLibraryPlugin.js +2 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
- package/lib/library/JsonpLibraryPlugin.js +11 -7
- package/lib/library/ModuleLibraryPlugin.js +256 -64
- package/lib/library/SystemLibraryPlugin.js +12 -8
- package/lib/library/UmdLibraryPlugin.js +62 -25
- package/lib/loaders/LoaderRunner.js +14 -1
- package/lib/loaders/loadLoader.js +8 -4
- package/lib/logging/createConsoleLogger.js +7 -4
- package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
- package/lib/node/NodeEnvironmentPlugin.js +17 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -3
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +70 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
- package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
- package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
- package/lib/node/nodeConsole.js +7 -3
- package/lib/optimize/AggressiveMergingPlugin.js +21 -17
- package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
- package/lib/optimize/ConcatenatedModule.js +996 -477
- package/lib/optimize/ConstExportsPlugin.js +11 -7
- package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
- package/lib/optimize/InlineExports.js +9 -5
- package/lib/optimize/InnerGraph.js +28 -12
- package/lib/optimize/InnerGraphPlugin.js +23 -18
- package/lib/optimize/LimitChunkCountPlugin.js +7 -3
- package/lib/optimize/MangleExportsPlugin.js +7 -8
- package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
- package/lib/optimize/MinChunkSizePlugin.js +7 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
- package/lib/optimize/RealContentHashPlugin.js +20 -13
- 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 +232 -68
- 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 +377 -136
- package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
- package/lib/prefetch/parseResourceHintOptions.js +31 -4
- package/lib/rules/BasicEffectRulePlugin.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +8 -4
- package/lib/rules/GlobMatcherRulePlugin.js +68 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
- package/lib/rules/RuleSetCompiler.js +146 -12
- package/lib/rules/UseEffectRulePlugin.js +18 -11
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
- package/lib/runtime/BaseUriRuntimeModule.js +33 -7
- package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
- package/lib/runtime/CompatRuntimeModule.js +5 -3
- package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
- package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
- package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
- package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
- package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
- package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
- package/lib/runtime/GlobalRuntimeModule.js +18 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
- package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
- package/lib/runtime/NonceRuntimeModule.js +10 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
- package/lib/runtime/PublicPathRuntimeModule.js +12 -2
- package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
- package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
- package/lib/runtime/SystemContextRuntimeModule.js +10 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
- package/lib/runtime/WorkerRuntimeModule.js +11 -1
- package/lib/runtime/baseUri.js +63 -0
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +24 -15
- package/lib/schemes/VirtualUrlPlugin.js +13 -7
- package/lib/serialization/AggregateErrorSerializer.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +274 -942
- package/lib/serialization/ErrorObjectSerializer.js +1 -1
- package/lib/serialization/FileMiddleware.js +305 -66
- 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 +253 -226
- package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
- package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
- package/lib/stats/StatsFactory.js +56 -35
- package/lib/stats/StatsPrinter.js +16 -12
- package/lib/typescript/TypeScriptPlugin.js +12 -14
- package/lib/url/URLParserPlugin.js +26 -13
- package/lib/util/AsyncQueue.js +4 -3
- package/lib/util/Hash.js +5 -1
- package/lib/util/LazySet.js +35 -22
- package/lib/util/LocConverter.js +36 -13
- package/lib/util/SourceProcessor.js +1050 -24
- package/lib/util/StringXor.js +1 -1
- package/lib/util/chainedImports.js +9 -5
- package/lib/util/cleverMerge.js +1 -1
- package/lib/util/comparators.js +45 -14
- package/lib/util/concatenate.js +203 -77
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHash.js +2 -2
- package/lib/util/createHooksRegistry.js +8 -10
- package/lib/util/dataURL.js +225 -1
- package/lib/util/extractSourceMap.js +4 -3
- package/lib/util/findCaseMismatch.js +139 -0
- package/lib/util/formatLocation.js +1 -2
- package/lib/util/fs.js +22 -5
- package/lib/util/globUtils.js +298 -24
- package/lib/util/hash/BatchedHash.js +5 -1
- package/lib/util/hash/BulkUpdateHash.js +5 -1
- package/lib/util/hash/DebugHash.js +5 -1
- package/lib/util/hash/hash-digest.js +6 -2
- package/lib/util/identifier.js +25 -1
- package/lib/util/implicitTypeLoaderFallback.js +1 -1
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/lazyModule.js +56 -0
- package/lib/util/makeSerializable.js +7 -3
- package/lib/util/matchAlias.js +25 -0
- package/lib/util/mimeTypes.js +11 -5
- package/lib/util/nonNumericOnlyHash.js +4 -3
- package/lib/util/parseJson.js +5 -3
- package/lib/util/preloadModuleType.js +32 -0
- package/lib/util/registerExternalSerializer.js +7 -5
- package/lib/util/runtime.js +2 -2
- package/lib/util/semver.js +1 -1
- package/lib/util/serialization.js +28 -28
- package/lib/util/source.js +2 -2
- package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
- package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
- package/lib/wasm/wasmModuleFilename.js +54 -0
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
- package/lib/wasm-async/AsyncWasmModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
- package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
- package/lib/wasm-sync/SyncWasmModule.js +2 -2
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
- package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
- package/lib/wasm-sync/WebAssemblyParser.js +4 -6
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
- package/lib/web/FetchCompileWasmPlugin.js +46 -16
- package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
- package/lib/web/JsonpTemplatePlugin.js +2 -2
- package/lib/webpack.js +22 -11
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +1 -0
- package/package.json +37 -30
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +780 -91
- 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 +4013 -738
- package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
|
@@ -0,0 +1,253 @@
|
|
|
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 UnusedAliasesWarning = require("../errors/UnusedAliasesWarning");
|
|
9
|
+
const { join } = require("../util/fs");
|
|
10
|
+
const {
|
|
11
|
+
ABSOLUTE_PATH_REGEXP,
|
|
12
|
+
WINDOWS_PATH_SEPARATOR_REGEXP
|
|
13
|
+
} = require("../util/identifier");
|
|
14
|
+
const matchAlias = require("../util/matchAlias");
|
|
15
|
+
const getSourceModules = require("./getSourceModules");
|
|
16
|
+
|
|
17
|
+
/** @import { PerformanceOptions } from "../../declarations/WebpackOptions" */
|
|
18
|
+
/** @import Compiler from "../Compiler" */
|
|
19
|
+
/** @import Dependency from "../Dependency" */
|
|
20
|
+
/** @import DependenciesBlock from "../DependenciesBlock" */
|
|
21
|
+
/** @import { ContextDependencyOptions } from "../dependencies/ContextDependency" */
|
|
22
|
+
/** @import Module from "../Module" */
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* One `resolve.alias` entry, prepared for repeated matching.
|
|
26
|
+
* @typedef {object} PendingAlias
|
|
27
|
+
* @property {string} name the alias name as written, for the report
|
|
28
|
+
* @property {string} matchName the name to compare with, separators normalized when absolute
|
|
29
|
+
* @property {boolean} onlyModule whether the alias only matches the whole request
|
|
30
|
+
* @property {boolean} absolute whether the name is an absolute path
|
|
31
|
+
* @property {string | undefined} wildcardPrefix the part of `matchName` before its single "*", when it has one
|
|
32
|
+
* @property {string} wildcardSuffix the part of `matchName` after that "*"
|
|
33
|
+
* @property {boolean} used whether some request reached this alias
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
const PLUGIN_NAME = "UnusedAliasesPlugin";
|
|
37
|
+
|
|
38
|
+
const SLASH = "/";
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Whether an alias applies to a request. `AliasPlugin` accepts a single "*" in
|
|
42
|
+
* a name, matching by prefix and suffix instead of by segment.
|
|
43
|
+
* @param {string} request the request, separators normalized when the alias is absolute
|
|
44
|
+
* @param {PendingAlias} alias the alias to test
|
|
45
|
+
* @returns {boolean} true when the alias applies
|
|
46
|
+
*/
|
|
47
|
+
const aliasApplies = (request, alias) =>
|
|
48
|
+
alias.wildcardPrefix !== undefined
|
|
49
|
+
? request.startsWith(alias.wildcardPrefix) &&
|
|
50
|
+
request.endsWith(alias.wildcardSuffix)
|
|
51
|
+
: matchAlias(request, alias.matchName, alias.onlyModule);
|
|
52
|
+
|
|
53
|
+
class UnusedAliasesPlugin {
|
|
54
|
+
/**
|
|
55
|
+
* Creates an instance of UnusedAliasesPlugin.
|
|
56
|
+
* @param {PerformanceOptions} options the plugin options
|
|
57
|
+
*/
|
|
58
|
+
constructor(options) {
|
|
59
|
+
/** @type {PerformanceOptions["hints"]} */
|
|
60
|
+
this.hints = options.hints;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
65
|
+
* @param {Compiler} compiler the compiler instance
|
|
66
|
+
* @returns {void}
|
|
67
|
+
*/
|
|
68
|
+
apply(compiler) {
|
|
69
|
+
const hints = this.hints;
|
|
70
|
+
|
|
71
|
+
compiler.hooks.compilation.tap(
|
|
72
|
+
PLUGIN_NAME,
|
|
73
|
+
(compilation, { normalModuleFactory }) => {
|
|
74
|
+
compilation.hooks.afterSeal.tap(PLUGIN_NAME, () => {
|
|
75
|
+
// Nothing was factorized, so no alias could match — an empty build
|
|
76
|
+
// is not evidence that an alias is unused.
|
|
77
|
+
if (compilation.modules.size === 0) return;
|
|
78
|
+
|
|
79
|
+
const configured =
|
|
80
|
+
normalModuleFactory.getResolver("normal").options.alias;
|
|
81
|
+
|
|
82
|
+
if (configured.length === 0) return;
|
|
83
|
+
|
|
84
|
+
/** @type {PendingAlias[]} */
|
|
85
|
+
const entries = [];
|
|
86
|
+
let hasAbsoluteName = false;
|
|
87
|
+
let unused = configured.length;
|
|
88
|
+
|
|
89
|
+
for (const { name, onlyModule } of configured) {
|
|
90
|
+
const absolute = ABSOLUTE_PATH_REGEXP.test(name);
|
|
91
|
+
// An absolute name is compared with paths, whose separator differs
|
|
92
|
+
// per platform
|
|
93
|
+
const matchName = absolute
|
|
94
|
+
? name.replace(WINDOWS_PATH_SEPARATOR_REGEXP, SLASH)
|
|
95
|
+
: name;
|
|
96
|
+
const starIndex = matchName.indexOf("*");
|
|
97
|
+
// `onlyModule` turns the wildcard off, so only the whole name matches
|
|
98
|
+
const wildcardPrefix =
|
|
99
|
+
!onlyModule &&
|
|
100
|
+
starIndex !== -1 &&
|
|
101
|
+
!matchName.includes("*", starIndex + 1)
|
|
102
|
+
? matchName.slice(0, starIndex)
|
|
103
|
+
: undefined;
|
|
104
|
+
|
|
105
|
+
if (absolute) hasAbsoluteName = true;
|
|
106
|
+
|
|
107
|
+
entries.push({
|
|
108
|
+
name,
|
|
109
|
+
matchName,
|
|
110
|
+
onlyModule: Boolean(onlyModule),
|
|
111
|
+
absolute,
|
|
112
|
+
wildcardPrefix,
|
|
113
|
+
wildcardSuffix:
|
|
114
|
+
wildcardPrefix === undefined
|
|
115
|
+
? ""
|
|
116
|
+
: matchName.slice(starIndex + 1),
|
|
117
|
+
used: false
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Marks the one alias a request reaches: `AliasPlugin` stops at the
|
|
123
|
+
* first match, and a resolved path is only seen by an absolute name.
|
|
124
|
+
* @param {string} request the request to test
|
|
125
|
+
* @param {boolean=} absoluteOnly whether to test absolute names only
|
|
126
|
+
* @returns {void}
|
|
127
|
+
*/
|
|
128
|
+
const consume = (request, absoluteOnly) => {
|
|
129
|
+
/** @type {string | undefined} */
|
|
130
|
+
let normalized;
|
|
131
|
+
|
|
132
|
+
for (let i = 0; i < entries.length; i++) {
|
|
133
|
+
const alias = entries[i];
|
|
134
|
+
let candidate = request;
|
|
135
|
+
|
|
136
|
+
if (alias.absolute) {
|
|
137
|
+
if (normalized === undefined) {
|
|
138
|
+
normalized = request.replace(
|
|
139
|
+
WINDOWS_PATH_SEPARATOR_REGEXP,
|
|
140
|
+
SLASH
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
candidate = normalized;
|
|
144
|
+
} else if (absoluteOnly) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (aliasApplies(candidate, alias)) {
|
|
149
|
+
if (!alias.used) {
|
|
150
|
+
alias.used = true;
|
|
151
|
+
unused--;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
for (const module of compilation.modules) {
|
|
160
|
+
if (unused === 0) break;
|
|
161
|
+
|
|
162
|
+
for (const sourceModule of getSourceModules(module)) {
|
|
163
|
+
const rawRequest =
|
|
164
|
+
/** @type {Module & { rawRequest?: string }} */
|
|
165
|
+
(sourceModule).rawRequest;
|
|
166
|
+
|
|
167
|
+
if (typeof rawRequest === "string") consume(rawRequest);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Only what is left unaccounted for is worth the walk: a request the
|
|
172
|
+
// graph keeps nowhere else is on the dependency that asked for it.
|
|
173
|
+
if (unused > 0) {
|
|
174
|
+
const fs = compiler.inputFileSystem || undefined;
|
|
175
|
+
// One import states its request on several dependencies, and a
|
|
176
|
+
// request every module makes states it once per module.
|
|
177
|
+
/** @type {Set<string>} */
|
|
178
|
+
const seen = new Set();
|
|
179
|
+
|
|
180
|
+
for (const module of compilation.modules) {
|
|
181
|
+
if (unused === 0) break;
|
|
182
|
+
|
|
183
|
+
const context = module.context;
|
|
184
|
+
|
|
185
|
+
/** @type {DependenciesBlock[]} */
|
|
186
|
+
const blocks = [module];
|
|
187
|
+
|
|
188
|
+
while (blocks.length > 0) {
|
|
189
|
+
const block =
|
|
190
|
+
/** @type {DependenciesBlock} */
|
|
191
|
+
(blocks.pop());
|
|
192
|
+
|
|
193
|
+
for (const dependency of block.dependencies) {
|
|
194
|
+
const typed =
|
|
195
|
+
/** @type {Dependency & { request?: string, options?: ContextDependencyOptions }} */
|
|
196
|
+
(dependency);
|
|
197
|
+
// A `ContextModule` keeps the request in its options, and one
|
|
198
|
+
// an alias sent to `false` reaches no `rawRequest` at all.
|
|
199
|
+
const request =
|
|
200
|
+
typeof typed.request === "string"
|
|
201
|
+
? typed.request
|
|
202
|
+
: typed.options &&
|
|
203
|
+
typeof typed.options.request === "string"
|
|
204
|
+
? typed.options.request
|
|
205
|
+
: undefined;
|
|
206
|
+
|
|
207
|
+
if (request === undefined) continue;
|
|
208
|
+
|
|
209
|
+
if (!seen.has(request)) {
|
|
210
|
+
seen.add(request);
|
|
211
|
+
consume(request);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// An absolute name matches the path the resolver saw, which for
|
|
215
|
+
// a relative request is the issuer's context joined with it, so
|
|
216
|
+
// the same request answers differently per module.
|
|
217
|
+
if (
|
|
218
|
+
hasAbsoluteName &&
|
|
219
|
+
context !== null &&
|
|
220
|
+
request.startsWith(".")
|
|
221
|
+
) {
|
|
222
|
+
consume(join(fs, context, request), true);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
for (const child of block.blocks) blocks.push(child);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if (unused === 0) return;
|
|
232
|
+
|
|
233
|
+
const warning = new UnusedAliasesWarning(
|
|
234
|
+
entries
|
|
235
|
+
.filter((alias) => !alias.used)
|
|
236
|
+
.map((alias) => `'${alias.name}'`)
|
|
237
|
+
.sort()
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
if (hints === "error") {
|
|
241
|
+
compilation.errors.push(warning);
|
|
242
|
+
} else if (hints === "stats") {
|
|
243
|
+
compilation.hints.push(warning);
|
|
244
|
+
} else {
|
|
245
|
+
compilation.warnings.push(warning);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
module.exports = UnusedAliasesPlugin;
|
|
@@ -0,0 +1,87 @@
|
|
|
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 { VALUE_DEP_PREFIX, getDeclaredKeys } = require("../DefinePlugin");
|
|
9
|
+
const UnusedDefinesWarning = require("../errors/UnusedDefinesWarning");
|
|
10
|
+
|
|
11
|
+
/** @import { PerformanceOptions } from "../../declarations/WebpackOptions" */
|
|
12
|
+
/** @import Compiler from "../Compiler" */
|
|
13
|
+
/** @import { NormalModuleBuildInfo } from "../NormalModule" */
|
|
14
|
+
|
|
15
|
+
const PLUGIN_NAME = "UnusedDefinesPlugin";
|
|
16
|
+
|
|
17
|
+
class UnusedDefinesPlugin {
|
|
18
|
+
/**
|
|
19
|
+
* Creates an instance of UnusedDefinesPlugin.
|
|
20
|
+
* @param {PerformanceOptions} options the plugin options
|
|
21
|
+
*/
|
|
22
|
+
constructor(options) {
|
|
23
|
+
/** @type {PerformanceOptions["hints"]} */
|
|
24
|
+
this.hints = options.hints;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
29
|
+
* @param {Compiler} compiler the compiler instance
|
|
30
|
+
* @returns {void}
|
|
31
|
+
*/
|
|
32
|
+
apply(compiler) {
|
|
33
|
+
const hints = this.hints;
|
|
34
|
+
|
|
35
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
36
|
+
compilation.hooks.afterSeal.tap(PLUGIN_NAME, () => {
|
|
37
|
+
const declared = getDeclaredKeys(compilation);
|
|
38
|
+
|
|
39
|
+
if (declared === undefined || declared.size === 0) return;
|
|
40
|
+
// Nothing was parsed, so no key could be substituted — an empty build is
|
|
41
|
+
// not evidence that a key is unused.
|
|
42
|
+
if (compilation.modules.size === 0) return;
|
|
43
|
+
|
|
44
|
+
/** @type {Set<string>} */
|
|
45
|
+
const used = new Set();
|
|
46
|
+
|
|
47
|
+
for (const module of compilation.modules) {
|
|
48
|
+
const buildInfo =
|
|
49
|
+
/** @type {NormalModuleBuildInfo} */
|
|
50
|
+
(module.buildInfo);
|
|
51
|
+
|
|
52
|
+
if (!buildInfo || !buildInfo.valueDependencies) continue;
|
|
53
|
+
|
|
54
|
+
// Survives the persistent cache: `valueDependencies` is serialized
|
|
55
|
+
// with the module, so a restored module answers without rebuilding.
|
|
56
|
+
for (const name of buildInfo.valueDependencies.keys()) {
|
|
57
|
+
if (name.startsWith(VALUE_DEP_PREFIX)) {
|
|
58
|
+
used.add(name.slice(VALUE_DEP_PREFIX.length));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const unused = [];
|
|
64
|
+
|
|
65
|
+
for (const key of declared) {
|
|
66
|
+
if (!used.has(key)) unused.push(key);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (unused.length === 0) return;
|
|
70
|
+
|
|
71
|
+
unused.sort();
|
|
72
|
+
|
|
73
|
+
const warning = new UnusedDefinesWarning(unused);
|
|
74
|
+
|
|
75
|
+
if (hints === "error") {
|
|
76
|
+
compilation.errors.push(warning);
|
|
77
|
+
} else if (hints === "stats") {
|
|
78
|
+
compilation.hints.push(warning);
|
|
79
|
+
} else {
|
|
80
|
+
compilation.warnings.push(warning);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
module.exports = UnusedDefinesPlugin;
|
|
@@ -0,0 +1,110 @@
|
|
|
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 ExternalModule = require("../ExternalModule");
|
|
9
|
+
const {
|
|
10
|
+
getAlternateCoreModuleRequest
|
|
11
|
+
} = require("../ExternalModuleFactoryPlugin");
|
|
12
|
+
const UnusedExternalsWarning = require("../errors/UnusedExternalsWarning");
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @import {
|
|
16
|
+
* Externals,
|
|
17
|
+
* PerformanceOptions
|
|
18
|
+
* } from "../../declarations/WebpackOptions"
|
|
19
|
+
*/
|
|
20
|
+
/** @import Compiler from "../Compiler" */
|
|
21
|
+
|
|
22
|
+
const PLUGIN_NAME = "UnusedExternalsPlugin";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Collects the requests the configuration names outright. A RegExp or a function
|
|
26
|
+
* decides per request, so there is no entry that could be called unused.
|
|
27
|
+
* @param {Externals} externals the configured externals
|
|
28
|
+
* @param {Set<string>} requests collected requests
|
|
29
|
+
* @returns {void}
|
|
30
|
+
*/
|
|
31
|
+
const collectRequests = (externals, requests) => {
|
|
32
|
+
if (typeof externals === "string") {
|
|
33
|
+
requests.add(externals);
|
|
34
|
+
} else if (Array.isArray(externals)) {
|
|
35
|
+
for (const entry of externals) collectRequests(entry, requests);
|
|
36
|
+
} else if (externals instanceof RegExp || typeof externals === "function") {
|
|
37
|
+
// Decides per request, so it names nothing that could be called unused.
|
|
38
|
+
} else if (externals) {
|
|
39
|
+
for (const request of Object.keys(externals)) requests.add(request);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
class UnusedExternalsPlugin {
|
|
44
|
+
/**
|
|
45
|
+
* Creates an instance of UnusedExternalsPlugin.
|
|
46
|
+
* @param {PerformanceOptions} options the plugin options
|
|
47
|
+
*/
|
|
48
|
+
constructor(options) {
|
|
49
|
+
/** @type {PerformanceOptions["hints"]} */
|
|
50
|
+
this.hints = options.hints;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
55
|
+
* @param {Compiler} compiler the compiler instance
|
|
56
|
+
* @returns {void}
|
|
57
|
+
*/
|
|
58
|
+
apply(compiler) {
|
|
59
|
+
const hints = this.hints;
|
|
60
|
+
|
|
61
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
62
|
+
compilation.hooks.afterSeal.tap(PLUGIN_NAME, () => {
|
|
63
|
+
const { externals } = compilation.options;
|
|
64
|
+
|
|
65
|
+
if (externals === undefined) return;
|
|
66
|
+
|
|
67
|
+
/** @type {Set<string>} */
|
|
68
|
+
const declared = new Set();
|
|
69
|
+
|
|
70
|
+
collectRequests(externals, declared);
|
|
71
|
+
|
|
72
|
+
if (declared.size === 0) return;
|
|
73
|
+
// Nothing was factorized, so nothing could be made external.
|
|
74
|
+
if (compilation.modules.size === 0) return;
|
|
75
|
+
|
|
76
|
+
for (const module of compilation.modules) {
|
|
77
|
+
if (module instanceof ExternalModule) {
|
|
78
|
+
// The request as written, not what it was rewritten to.
|
|
79
|
+
declared.delete(module.userRequest);
|
|
80
|
+
|
|
81
|
+
// A core module is external under either spelling, so the entry
|
|
82
|
+
// that matched may be the one the request does not use.
|
|
83
|
+
const alternateRequest = getAlternateCoreModuleRequest(
|
|
84
|
+
module.userRequest
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
if (alternateRequest !== undefined) {
|
|
88
|
+
declared.delete(alternateRequest);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if (declared.size === 0) return;
|
|
94
|
+
|
|
95
|
+
const unused = [...declared].sort();
|
|
96
|
+
const warning = new UnusedExternalsWarning(unused);
|
|
97
|
+
|
|
98
|
+
if (hints === "error") {
|
|
99
|
+
compilation.errors.push(warning);
|
|
100
|
+
} else if (hints === "stats") {
|
|
101
|
+
compilation.hints.push(warning);
|
|
102
|
+
} else {
|
|
103
|
+
compilation.warnings.push(warning);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
module.exports = UnusedExternalsPlugin;
|
|
@@ -0,0 +1,159 @@
|
|
|
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 HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
|
|
9
|
+
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
|
|
10
|
+
const UnusedReexportsWarning = require("../errors/UnusedReexportsWarning");
|
|
11
|
+
const { compareStrings } = require("../util/comparators");
|
|
12
|
+
const getModuleSize = require("./getModuleSize");
|
|
13
|
+
const hasOnlyUnusedExports = require("./hasOnlyUnusedExports");
|
|
14
|
+
|
|
15
|
+
/** @import { PerformanceOptions } from "../../declarations/WebpackOptions" */
|
|
16
|
+
/** @import Compiler from "../Compiler" */
|
|
17
|
+
/** @import Module from "../Module" */
|
|
18
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
19
|
+
/** @import { UnusedReexportDetails } from "../errors/UnusedReexportsWarning" */
|
|
20
|
+
|
|
21
|
+
const PLUGIN_NAME = "UnusedReexportsPlugin";
|
|
22
|
+
|
|
23
|
+
// Enough to name the offenders without listing the barrel.
|
|
24
|
+
const MAX_REPORTED_MODULES = 5;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Tells whether every module pulling this one in does so by re-exporting it.
|
|
28
|
+
* One an importer wants for its side effects alone is deliberate, not a
|
|
29
|
+
* barrel's leftover.
|
|
30
|
+
* @param {Module} module the module to look up
|
|
31
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
32
|
+
* @returns {boolean} true when only re-exports pull it in
|
|
33
|
+
*/
|
|
34
|
+
const isOnlyReexported = (module, moduleGraph) => {
|
|
35
|
+
// A re-export emits a side-effect edge of its own, so edges are grouped by
|
|
36
|
+
// the statement they come from — `sourceOrder` — rather than by their type.
|
|
37
|
+
/** @type {Map<Module, Set<number | undefined>>} */
|
|
38
|
+
const reexportedStatements = new Map();
|
|
39
|
+
/** @type {[Module, number | undefined][]} */
|
|
40
|
+
const edges = [];
|
|
41
|
+
|
|
42
|
+
for (const connection of moduleGraph.getIncomingConnections(module)) {
|
|
43
|
+
const origin = connection.originModule;
|
|
44
|
+
|
|
45
|
+
// An entry has no origin: it is in the build because it was asked for.
|
|
46
|
+
if (!origin) return false;
|
|
47
|
+
|
|
48
|
+
const dependency = connection.dependency;
|
|
49
|
+
|
|
50
|
+
// Only an ESM import statement can carry a re-export.
|
|
51
|
+
if (!(dependency instanceof HarmonyImportDependency)) return false;
|
|
52
|
+
|
|
53
|
+
if (dependency instanceof HarmonyExportImportedSpecifierDependency) {
|
|
54
|
+
const statements = reexportedStatements.get(origin);
|
|
55
|
+
|
|
56
|
+
if (statements === undefined) {
|
|
57
|
+
reexportedStatements.set(origin, new Set([dependency.sourceOrder]));
|
|
58
|
+
} else {
|
|
59
|
+
statements.add(dependency.sourceOrder);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
edges.push([origin, dependency.sourceOrder]);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (edges.length === 0) return false;
|
|
67
|
+
|
|
68
|
+
for (const [origin, sourceOrder] of edges) {
|
|
69
|
+
const statements = reexportedStatements.get(origin);
|
|
70
|
+
|
|
71
|
+
if (statements === undefined || !statements.has(sourceOrder)) return false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return true;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
class UnusedReexportsPlugin {
|
|
78
|
+
/**
|
|
79
|
+
* Creates an instance of UnusedReexportsPlugin.
|
|
80
|
+
* @param {PerformanceOptions} options the plugin options
|
|
81
|
+
*/
|
|
82
|
+
constructor(options) {
|
|
83
|
+
/** @type {PerformanceOptions["hints"]} */
|
|
84
|
+
this.hints = options.hints;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
89
|
+
* @param {Compiler} compiler the compiler instance
|
|
90
|
+
* @returns {void}
|
|
91
|
+
*/
|
|
92
|
+
apply(compiler) {
|
|
93
|
+
const hints = this.hints;
|
|
94
|
+
|
|
95
|
+
if (!hints) return;
|
|
96
|
+
|
|
97
|
+
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
|
|
98
|
+
/** @type {UnusedReexportsWarning | undefined} */
|
|
99
|
+
let warning;
|
|
100
|
+
|
|
101
|
+
// Usage is final here, and concatenation has not merged the modules
|
|
102
|
+
// away yet, so each one can still be named and measured.
|
|
103
|
+
compilation.hooks.optimizeModules.tap(PLUGIN_NAME, (modules) => {
|
|
104
|
+
const { chunkGraph, moduleGraph, requestShortener } = compilation;
|
|
105
|
+
/** @type {UnusedReexportDetails[]} */
|
|
106
|
+
const unused = [];
|
|
107
|
+
let wasted = 0;
|
|
108
|
+
|
|
109
|
+
for (const module of modules) {
|
|
110
|
+
// One webpack already left out costs nothing.
|
|
111
|
+
if (chunkGraph.getNumberOfModuleChunks(module) === 0) continue;
|
|
112
|
+
|
|
113
|
+
if (!hasOnlyUnusedExports(module, moduleGraph, chunkGraph)) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (!isOnlyReexported(module, moduleGraph)) continue;
|
|
118
|
+
|
|
119
|
+
const size = getModuleSize(module);
|
|
120
|
+
|
|
121
|
+
wasted += size;
|
|
122
|
+
unused.push({
|
|
123
|
+
name: module.readableIdentifier(requestShortener),
|
|
124
|
+
size
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (unused.length === 0) return;
|
|
129
|
+
|
|
130
|
+
// Ties break by name: module order is not stable across runtimes.
|
|
131
|
+
unused.sort(
|
|
132
|
+
(a, b) => b.size - a.size || compareStrings(a.name, b.name)
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
warning = new UnusedReexportsWarning(
|
|
136
|
+
unused.slice(0, MAX_REPORTED_MODULES),
|
|
137
|
+
unused.length,
|
|
138
|
+
wasted
|
|
139
|
+
);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Reported past the hash: `createHash` folds every message into it, so
|
|
143
|
+
// a hint pushed earlier would change the build's identity.
|
|
144
|
+
compilation.hooks.afterSeal.tap(PLUGIN_NAME, () => {
|
|
145
|
+
if (warning === undefined) return;
|
|
146
|
+
|
|
147
|
+
if (hints === "error") {
|
|
148
|
+
compilation.errors.push(warning);
|
|
149
|
+
} else if (hints === "stats") {
|
|
150
|
+
compilation.hints.push(warning);
|
|
151
|
+
} else {
|
|
152
|
+
compilation.warnings.push(warning);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
module.exports = UnusedReexportsPlugin;
|