@depup/webpack 5.106.1-depup.0 → 5.109.2-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 +9 -11
- package/bin/webpack.js +12 -0
- package/changes.json +16 -24
- package/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +60 -35
- package/lib/AsyncDependenciesBlock.js +3 -0
- package/lib/AutomaticPrefetchPlugin.js +6 -1
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +27 -5
- package/lib/CacheFacade.js +41 -0
- package/lib/Chunk.js +71 -25
- package/lib/ChunkGraph.js +153 -19
- package/lib/ChunkGroup.js +115 -28
- package/lib/ChunkTemplate.js +9 -0
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +27 -28
- package/lib/CodeGenerationResults.js +19 -0
- package/lib/CompatibilityPlugin.js +85 -37
- package/lib/Compilation.js +656 -112
- package/lib/Compiler.js +109 -35
- package/lib/ConcatenationScope.js +34 -4
- package/lib/ConditionalInitFragment.js +6 -0
- package/lib/ConstPlugin.js +15 -12
- package/lib/ContextExclusionPlugin.js +3 -1
- package/lib/ContextModule.js +345 -55
- package/lib/ContextModuleFactory.js +193 -51
- package/lib/ContextReplacementPlugin.js +8 -1
- package/lib/DefinePlugin.js +537 -139
- package/lib/DependenciesBlock.js +6 -1
- package/lib/Dependency.js +159 -11
- package/lib/DependencyTemplate.js +7 -1
- package/lib/DependencyTemplates.js +4 -0
- package/lib/DotenvPlugin.js +3 -0
- package/lib/DynamicEntryPlugin.js +3 -1
- package/lib/EntryOptionPlugin.js +42 -2
- package/lib/EntryPlugin.js +4 -1
- package/lib/Entrypoint.js +5 -1
- package/lib/EnvironmentPlugin.js +3 -2
- package/lib/ErrorHelpers.js +7 -0
- package/lib/EvalDevToolModulePlugin.js +3 -1
- package/lib/EvalSourceMapDevToolPlugin.js +11 -11
- package/lib/ExportsInfo.js +421 -113
- package/lib/ExportsInfoApiPlugin.js +4 -3
- package/lib/ExternalModule.js +381 -80
- package/lib/ExternalModuleFactoryPlugin.js +75 -3
- package/lib/ExternalsPlugin.js +3 -1
- package/lib/FileSystemInfo.js +701 -175
- package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
- package/lib/FlagDependencyExportsPlugin.js +82 -9
- package/lib/FlagDependencyUsagePlugin.js +115 -8
- package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
- package/lib/Generator.js +24 -3
- package/lib/HotModuleReplacementPlugin.js +110 -44
- package/lib/IgnorePlugin.js +5 -2
- package/lib/IgnoreWarningsPlugin.js +2 -1
- package/lib/InitFragment.js +33 -30
- package/lib/JavascriptMetaInfoPlugin.js +9 -6
- package/lib/LazyBarrel.js +389 -0
- package/lib/LibraryTemplatePlugin.js +2 -1
- package/lib/LoaderOptionsPlugin.js +3 -1
- package/lib/LoaderTargetPlugin.js +3 -1
- package/lib/MainTemplate.js +15 -0
- package/lib/ManifestPlugin.js +9 -2
- package/lib/Module.js +121 -57
- package/lib/ModuleFactory.js +6 -1
- package/lib/ModuleFilenameHelpers.js +18 -4
- package/lib/ModuleGraph.js +69 -2
- package/lib/ModuleGraphConnection.js +9 -0
- package/lib/ModuleInfoHeaderPlugin.js +5 -0
- package/lib/ModuleNotFoundError.js +3 -83
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleSourceTypeConstants.js +52 -19
- package/lib/ModuleTemplate.js +10 -0
- package/lib/ModuleTypeConstants.js +20 -4
- package/lib/MultiCompiler.js +59 -4
- package/lib/MultiStats.js +9 -0
- package/lib/MultiWatching.js +6 -0
- package/lib/NoEmitOnErrorsPlugin.js +1 -1
- package/lib/NodeStuffPlugin.js +78 -46
- package/lib/NormalModule.js +519 -206
- package/lib/NormalModuleFactory.js +156 -31
- package/lib/NormalModuleReplacementPlugin.js +3 -1
- package/lib/NullFactory.js +1 -0
- package/lib/OptionsApply.js +1 -0
- package/lib/Parser.js +3 -1
- package/lib/PlatformPlugin.js +2 -1
- package/lib/PrefetchPlugin.js +4 -1
- package/lib/ProgressPlugin.js +351 -161
- package/lib/ProvidePlugin.js +6 -3
- package/lib/RawModule.js +32 -16
- package/lib/RecordIdsPlugin.js +9 -0
- package/lib/RequestShortener.js +8 -0
- package/lib/ResolverFactory.js +5 -0
- package/lib/RuntimeGlobals.js +58 -5
- package/lib/RuntimeModule.js +22 -7
- package/lib/RuntimePlugin.js +123 -118
- package/lib/RuntimeTemplate.js +616 -37
- package/lib/SelfModuleFactory.js +3 -0
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
- package/lib/SourceMapDevToolPlugin.js +341 -63
- package/lib/Stats.js +6 -0
- package/lib/Template.js +52 -6
- package/lib/TemplatedPathPlugin.js +505 -138
- package/lib/UseStrictPlugin.js +3 -2
- package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
- package/lib/WarnDeprecatedOptionPlugin.js +6 -2
- package/lib/WarnNoModeSetPlugin.js +18 -2
- package/lib/WatchIgnorePlugin.js +5 -1
- package/lib/Watching.js +25 -3
- package/lib/WebpackError.js +3 -74
- package/lib/WebpackIsIncludedPlugin.js +4 -2
- package/lib/WebpackOptionsApply.js +88 -25
- package/lib/WebpackOptionsDefaulter.js +1 -0
- package/lib/asset/AssetBytesGenerator.js +28 -10
- package/lib/asset/AssetBytesParser.js +1 -0
- package/lib/asset/AssetGenerator.js +199 -60
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +115 -24
- package/lib/asset/AssetParser.js +4 -2
- package/lib/asset/AssetSourceGenerator.js +26 -8
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +23 -13
- package/lib/asset/WebManifestGenerator.js +164 -0
- package/lib/asset/WebManifestParser.js +130 -0
- package/lib/async-modules/AsyncModuleHelpers.js +1 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
- package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
- package/lib/async-modules/isGeneratorLowered.js +26 -0
- package/lib/buildChunkGraph.js +107 -15
- package/lib/bun/BunTargetPlugin.js +42 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
- package/lib/cache/AddManagedPathsPlugin.js +5 -1
- package/lib/cache/IdleFileCachePlugin.js +6 -1
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
- package/lib/cache/PackFileCacheStrategy.js +302 -12
- package/lib/cache/ResolverCachePlugin.js +12 -1
- package/lib/cache/getLazyHashedEtag.js +13 -2
- package/lib/cache/mergeEtags.js +4 -0
- package/lib/cli.js +142 -20
- package/lib/config/browserslistTargetHandler.js +141 -0
- package/lib/config/defaults.js +612 -43
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +46 -1
- package/lib/config/target.js +200 -2
- package/lib/container/ContainerEntryDependency.js +2 -0
- package/lib/container/ContainerEntryModule.js +27 -14
- package/lib/container/ContainerEntryModuleFactory.js +1 -0
- package/lib/container/ContainerExposedDependency.js +6 -2
- package/lib/container/ContainerPlugin.js +2 -1
- package/lib/container/ContainerReferencePlugin.js +3 -2
- package/lib/container/FallbackDependency.js +9 -7
- package/lib/container/FallbackItemDependency.js +1 -0
- package/lib/container/FallbackModule.js +22 -9
- package/lib/container/FallbackModuleFactory.js +1 -0
- package/lib/container/HoistContainerReferencesPlugin.js +47 -55
- package/lib/container/ModuleFederationPlugin.js +21 -29
- package/lib/container/RemoteModule.js +33 -10
- package/lib/container/RemoteRuntimeModule.js +15 -12
- package/lib/container/RemoteToExternalDependency.js +1 -0
- package/lib/container/options.js +7 -0
- package/lib/css/CssGenerator.js +540 -272
- package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
- package/lib/css/CssLoadingRuntimeModule.js +173 -81
- package/lib/{CssModule.js → css/CssModule.js} +72 -37
- package/lib/css/CssModulesPlugin.js +371 -208
- package/lib/css/CssParser.js +3538 -1963
- package/lib/css/syntax.js +4155 -0
- package/lib/debug/ProfilingPlugin.js +33 -2
- package/lib/deno/DenoTargetPlugin.js +41 -0
- package/lib/dependencies/AMDDefineDependency.js +29 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
- package/lib/dependencies/AMDPlugin.js +6 -3
- package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
- package/lib/dependencies/AMDRequireContextDependency.js +10 -11
- package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
- package/lib/dependencies/AMDRequireDependency.js +28 -20
- package/lib/dependencies/AMDRequireItemDependency.js +1 -0
- package/lib/dependencies/AMDRuntimeModules.js +3 -0
- package/lib/dependencies/CachedConstDependency.js +9 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
- package/lib/dependencies/CommonJsExportsDependency.js +74 -20
- package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
- package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
- package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
- package/lib/dependencies/CommonJsPlugin.js +7 -4
- package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
- package/lib/dependencies/CommonJsRequireDependency.js +135 -13
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
- package/lib/dependencies/ConstDependency.js +22 -12
- package/lib/dependencies/ContextDependency.js +13 -2
- package/lib/dependencies/ContextDependencyHelpers.js +7 -4
- package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
- package/lib/dependencies/ContextElementDependency.js +27 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
- package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
- package/lib/dependencies/CriticalDependencyWarning.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +681 -367
- package/lib/dependencies/CssIcssImportDependency.js +62 -17
- package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
- package/lib/dependencies/CssImportDependency.js +37 -1
- package/lib/dependencies/CssUrlDependency.js +87 -14
- package/lib/dependencies/DelegatedSourceDependency.js +1 -0
- package/lib/dependencies/DllEntryDependency.js +12 -13
- package/lib/dependencies/DynamicExports.js +5 -0
- package/lib/dependencies/EntryDependency.js +1 -0
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +18 -12
- package/lib/dependencies/ExternalModuleDependency.js +13 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
- package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
- package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
- package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
- package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
- package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
- package/lib/dependencies/HarmonyExports.js +6 -1
- package/lib/dependencies/HarmonyImportDependency.js +60 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
- package/lib/dependencies/HarmonyImportGuard.js +427 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
- package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
- package/lib/dependencies/HtmlEntryDependency.js +1295 -0
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
- package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
- package/lib/dependencies/HtmlSourceDependency.js +172 -0
- package/lib/dependencies/ImportContextDependency.js +9 -9
- package/lib/dependencies/ImportDependency.js +92 -3
- package/lib/dependencies/ImportEagerDependency.js +2 -0
- package/lib/dependencies/ImportMetaContextDependency.js +1 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
- package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
- package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
- package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
- package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
- package/lib/dependencies/ImportMetaPlugin.js +595 -209
- package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
- package/lib/dependencies/ImportParserPlugin.js +114 -27
- package/lib/dependencies/ImportPhase.js +17 -11
- package/lib/dependencies/ImportPlugin.js +2 -1
- package/lib/dependencies/ImportWeakDependency.js +3 -0
- package/lib/dependencies/JsonExportsDependency.js +15 -10
- package/lib/dependencies/LoaderDependency.js +2 -0
- package/lib/dependencies/LoaderImportDependency.js +3 -0
- package/lib/dependencies/LoaderPlugin.js +9 -2
- package/lib/dependencies/LocalModule.js +15 -12
- package/lib/dependencies/LocalModuleDependency.js +15 -13
- package/lib/dependencies/LocalModulesHelpers.js +3 -0
- package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
- package/lib/dependencies/ModuleDependency.js +14 -0
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/PrefetchDependency.js +1 -0
- package/lib/dependencies/ProvidedDependency.js +36 -27
- package/lib/dependencies/PureExpressionDependency.js +14 -10
- package/lib/dependencies/RequireContextDependency.js +1 -0
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
- package/lib/dependencies/RequireContextPlugin.js +2 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
- package/lib/dependencies/RequireEnsureDependency.js +16 -13
- package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
- package/lib/dependencies/RequireEnsurePlugin.js +2 -1
- package/lib/dependencies/RequireHeaderDependency.js +7 -4
- package/lib/dependencies/RequireIncludeDependency.js +2 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
- package/lib/dependencies/RequireIncludePlugin.js +2 -1
- package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
- package/lib/dependencies/RequireResolveContextDependency.js +10 -11
- package/lib/dependencies/RequireResolveDependency.js +2 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
- package/lib/dependencies/StaticExportsDependency.js +13 -10
- package/lib/dependencies/SystemPlugin.js +9 -6
- package/lib/dependencies/SystemRuntimeModule.js +1 -0
- package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
- package/lib/dependencies/URLContextDependency.js +8 -7
- package/lib/dependencies/URLDependency.js +157 -33
- package/lib/dependencies/URLPlugin.js +2 -0
- package/lib/dependencies/UnsupportedDependency.js +12 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
- package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
- package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
- package/lib/dependencies/WorkerDependency.js +111 -27
- package/lib/dependencies/WorkletDependency.js +278 -0
- package/lib/dependencies/getFunctionExpression.js +1 -0
- package/lib/dependencies/processExportInfo.js +14 -11
- package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
- package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
- package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
- package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
- package/lib/{DllModule.js → dll/DllModule.js} +36 -24
- package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
- package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
- package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
- package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
- package/lib/electron/ElectronTargetPlugin.js +24 -5
- package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
- package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
- package/lib/errors/BuildCycleError.js +1 -1
- package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
- package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
- package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
- package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
- package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
- package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
- package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
- package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
- package/lib/errors/JSONParseError.js +115 -0
- package/lib/errors/LoaderLoadingError.js +20 -0
- package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
- package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
- package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
- package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
- package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
- package/lib/errors/ModuleNotFoundError.js +94 -0
- package/lib/errors/ModuleParseError.js +141 -0
- package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
- package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
- package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
- package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
- package/lib/errors/NonErrorEmittedError.js +30 -0
- package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
- package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
- package/lib/errors/WebpackError.js +84 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
- package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
- package/lib/hmr/LazyCompilationPlugin.js +154 -7
- package/lib/hmr/lazyCompilationBackend.js +53 -12
- package/lib/html/HtmlGenerator.js +1490 -0
- package/lib/html/HtmlModule.js +41 -0
- package/lib/html/HtmlModulesPlugin.js +1129 -0
- package/lib/html/HtmlParser.js +1970 -0
- package/lib/html/favicon.svg +1 -0
- package/lib/html/syntax.js +9106 -0
- package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/ids/IdHelpers.js +49 -12
- package/lib/ids/NamedChunkIdsPlugin.js +3 -1
- package/lib/ids/NamedModuleIdsPlugin.js +3 -1
- package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
- package/lib/ids/SyncModuleIdsPlugin.js +3 -1
- package/lib/index.js +66 -15
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
- package/lib/javascript/BasicEvaluatedExpression.js +370 -49
- package/lib/javascript/ChunkFormatHelpers.js +2 -1
- package/lib/javascript/ChunkHelpers.js +1 -0
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
- package/lib/javascript/JavascriptGenerator.js +213 -51
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +628 -198
- package/lib/javascript/JavascriptParser.js +1334 -471
- package/lib/javascript/JavascriptParserHelpers.js +10 -7
- package/lib/javascript/StartupHelpers.js +5 -0
- package/lib/javascript/syntax.js +5037 -0
- package/lib/json/JsonData.js +5 -0
- package/lib/json/JsonGenerator.js +21 -0
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +8 -1
- package/lib/json/JsonParser.js +18 -27
- package/lib/library/AbstractLibraryPlugin.js +17 -2
- package/lib/library/AmdLibraryPlugin.js +8 -0
- package/lib/library/AssignLibraryPlugin.js +21 -3
- package/lib/library/EnableLibraryPlugin.js +8 -2
- package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
- package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
- package/lib/library/JsonpLibraryPlugin.js +8 -0
- package/lib/library/ModuleLibraryPlugin.js +154 -7
- package/lib/library/SystemLibraryPlugin.js +11 -3
- package/lib/library/UmdLibraryPlugin.js +16 -0
- package/lib/loaders/LoaderRunner.js +714 -0
- package/lib/loaders/loadLoader.js +100 -0
- package/lib/logging/Logger.js +17 -0
- package/lib/logging/createConsoleLogger.js +7 -0
- package/lib/logging/runtime.js +2 -0
- package/lib/logging/truncateArgs.js +2 -0
- package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
- package/lib/node/NodeEnvironmentPlugin.js +7 -3
- package/lib/node/NodeSourcePlugin.js +1 -1
- package/lib/node/NodeTargetPlugin.js +4 -63
- package/lib/node/NodeTemplatePlugin.js +3 -1
- package/lib/node/NodeWatchFileSystem.js +40 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
- package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
- package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
- package/lib/node/nodeBuiltins.js +80 -0
- package/lib/node/nodeConsole.js +116 -64
- package/lib/optimize/AggressiveMergingPlugin.js +22 -16
- package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
- package/lib/optimize/ConcatenatedModule.js +603 -130
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +374 -262
- package/lib/optimize/InnerGraphPlugin.js +246 -117
- package/lib/optimize/LimitChunkCountPlugin.js +9 -0
- package/lib/optimize/MangleExportsPlugin.js +5 -1
- package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
- package/lib/optimize/MinChunkSizePlugin.js +2 -1
- package/lib/optimize/MinMaxSizeWarning.js +5 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
- package/lib/optimize/RealContentHashPlugin.js +130 -52
- package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
- package/lib/optimize/RuntimeChunkPlugin.js +2 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
- package/lib/optimize/SplitChunksPlugin.js +200 -50
- package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
- package/lib/performance/NoAsyncChunksWarning.js +5 -3
- package/lib/performance/SizeLimitsPlugin.js +8 -2
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
- package/lib/prefetch/ResourceHintPlugin.js +687 -0
- package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
- package/lib/prefetch/parseResourceHintOptions.js +103 -0
- package/lib/rules/BasicEffectRulePlugin.js +3 -0
- package/lib/rules/BasicMatcherRulePlugin.js +3 -0
- package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
- package/lib/rules/RuleSetCompiler.js +132 -0
- package/lib/rules/UseEffectRulePlugin.js +10 -3
- package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
- package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
- package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
- package/lib/runtime/BaseUriRuntimeModule.js +1 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
- package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
- package/lib/runtime/CompatRuntimeModule.js +2 -0
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
- package/lib/runtime/GlobalRuntimeModule.js +1 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
- package/lib/runtime/HelperRuntimeModule.js +5 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
- package/lib/runtime/PublicPathRuntimeModule.js +1 -0
- package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
- package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
- package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
- package/lib/runtime/SystemContextRuntimeModule.js +1 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/DataUriPlugin.js +14 -2
- package/lib/schemes/FileUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +86 -4
- package/lib/schemes/VirtualUrlPlugin.js +8 -4
- package/lib/serialization/AggregateErrorSerializer.js +9 -6
- package/lib/serialization/ArraySerializer.js +6 -8
- package/lib/serialization/BinaryMiddleware.js +427 -1006
- package/lib/serialization/DateObjectSerializer.js +4 -2
- package/lib/serialization/ErrorObjectSerializer.js +10 -6
- package/lib/serialization/FileMiddleware.js +345 -59
- package/lib/serialization/MapObjectSerializer.js +7 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
- package/lib/serialization/ObjectMiddleware.js +73 -13
- package/lib/serialization/PlainObjectSerializer.js +16 -8
- package/lib/serialization/RegExpObjectSerializer.js +4 -2
- package/lib/serialization/Serializer.js +6 -0
- package/lib/serialization/SerializerMiddleware.js +14 -2
- package/lib/serialization/SetObjectSerializer.js +6 -8
- package/lib/serialization/SingleItemMiddleware.js +3 -0
- package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
- package/lib/sharing/ConsumeSharedModule.js +21 -7
- package/lib/sharing/ConsumeSharedPlugin.js +11 -11
- package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
- package/lib/sharing/ProvideForSharedDependency.js +1 -0
- package/lib/sharing/ProvideSharedDependency.js +34 -15
- package/lib/sharing/ProvideSharedModule.js +42 -12
- package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
- package/lib/sharing/ProvideSharedPlugin.js +13 -8
- package/lib/sharing/SharePlugin.js +5 -1
- package/lib/sharing/ShareRuntimeModule.js +19 -16
- package/lib/sharing/resolveMatchedConfigs.js +6 -2
- package/lib/sharing/utils.js +9 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
- package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
- package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
- package/lib/stats/StatsFactory.js +70 -27
- package/lib/stats/StatsPrinter.js +16 -2
- package/lib/typescript/TypeScriptPlugin.js +210 -0
- package/lib/url/URLParserPlugin.js +111 -23
- package/lib/util/ArrayHelpers.js +1 -0
- package/lib/util/ArrayQueue.js +10 -5
- package/lib/util/AsyncQueue.js +154 -74
- package/lib/util/Hash.js +2 -2
- package/lib/util/IterableHelpers.js +3 -0
- package/lib/util/LazyBucketSortedSet.js +26 -0
- package/lib/util/LazySet.js +45 -4
- package/lib/util/LocConverter.js +64 -0
- package/lib/util/ParallelismFactorCalculator.js +1 -0
- package/lib/util/Queue.js +6 -3
- package/lib/util/Semaphore.js +15 -1
- package/lib/util/SetHelpers.js +4 -1
- package/lib/util/SortableSet.js +7 -1
- package/lib/util/SourceProcessor.js +119 -0
- package/lib/util/StackedCacheMap.js +20 -3
- package/lib/util/StackedMap.js +162 -43
- package/lib/util/StringXor.js +1 -1
- package/lib/util/TupleQueue.js +7 -3
- package/lib/util/TupleSet.js +14 -0
- package/lib/util/URLAbsoluteSpecifier.js +1 -0
- package/lib/util/WeakTupleMap.js +60 -1
- package/lib/util/binarySearchBounds.js +3 -2
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/cleverMerge.js +19 -2
- package/lib/util/comparators.js +35 -4
- package/lib/util/compileBooleanMatcher.js +9 -0
- package/lib/util/concatenate.js +80 -24
- package/lib/util/conventions.js +46 -1
- package/lib/util/createHash.js +0 -1
- package/lib/util/createHooksRegistry.js +43 -0
- package/lib/util/createMappings.js +118 -0
- package/lib/util/dataURL.js +3 -2
- package/lib/util/deprecation.js +19 -0
- package/lib/util/deterministicGrouping.js +46 -17
- package/lib/util/extractSourceMap.js +2 -1
- package/lib/util/extractUrlAndGlobal.js +1 -0
- package/lib/util/findGraphRoots.js +7 -0
- package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
- package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
- package/lib/util/fs.js +87 -14
- package/lib/util/generateDebugId.js +1 -0
- package/lib/util/globUtils.js +710 -0
- package/lib/util/hash/BatchedHash.js +1 -0
- package/lib/util/hash/BulkUpdateHash.js +1 -0
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +32 -15
- package/lib/util/hash/md4.js +1 -1
- package/lib/util/hash/wasm-hash.js +5 -0
- package/lib/util/hash/xxhash64.js +1 -1
- package/lib/util/identifier.js +118 -7
- package/lib/util/implicitTypeLoaderFallback.js +62 -0
- package/lib/util/internalSerializables.js +102 -60
- package/lib/util/magicComment.js +149 -7
- package/lib/util/makeSerializable.js +7 -0
- package/lib/util/memoize.js +2 -0
- package/lib/util/mimeTypes.js +176 -0
- package/lib/util/nonNumericOnlyHash.js +31 -1
- package/lib/util/numberHash.js +2 -2
- package/lib/util/parseJson.js +41 -0
- package/lib/util/processAsyncTree.js +8 -0
- package/lib/util/property.js +9 -2
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +24 -4
- package/lib/util/removeBOM.js +1 -0
- package/lib/util/runtime.js +32 -0
- package/lib/util/semver.js +15 -0
- package/lib/util/serialization.js +2 -0
- package/lib/util/smartGrouping.js +8 -0
- package/lib/util/source.js +23 -0
- package/lib/util/topologicalSort.js +69 -0
- package/lib/validateSchema.js +1 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
- package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
- package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
- package/lib/wasm-sync/WebAssemblyParser.js +9 -3
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
- package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
- package/lib/web/FetchCompileWasmPlugin.js +27 -1
- package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
- package/lib/web/JsonpTemplatePlugin.js +2 -1
- package/lib/webpack.js +78 -1
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
- package/module.d.ts +21 -0
- package/package.json +79 -77
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +1173 -80
- package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
- package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
- package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +38 -0
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
- package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
- package/types.d.ts +11053 -3019
- package/lib/CaseSensitiveModulesWarning.js +0 -72
- package/lib/GraphHelpers.js +0 -46
- package/lib/ModuleParseError.js +0 -125
- package/lib/NoModeWarning.js +0 -23
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
- package/lib/css/walkCssTokens.js +0 -1843
- package/lib/util/AppendOnlyStackedSet.js +0 -78
- /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
- /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
- /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
|
@@ -42,7 +42,13 @@ const FF = BigInt("0xff");
|
|
|
42
42
|
*/
|
|
43
43
|
const encode = (buffer, base) => {
|
|
44
44
|
if (buffer.length === 0) return "";
|
|
45
|
-
const
|
|
45
|
+
const alphabet = ENCODE_TABLE[base];
|
|
46
|
+
const bigIntBase = BigInt(alphabet.length);
|
|
47
|
+
// Leading zero bytes are not significant in the BigInt below, so they would be
|
|
48
|
+
// lost; Base58Check-style, re-emit each as one leading alphabet[0] char. Keeps
|
|
49
|
+
// the encoding reversible and its length tracking the input (prefix-stable slices).
|
|
50
|
+
let zeros = 0;
|
|
51
|
+
while (zeros < buffer.length && buffer[zeros] === 0) zeros++;
|
|
46
52
|
// Convert buffer to BigInt efficiently using bitwise operations
|
|
47
53
|
let value = ZERO;
|
|
48
54
|
for (let i = 0; i < buffer.length; i++) {
|
|
@@ -51,46 +57,50 @@ const encode = (buffer, base) => {
|
|
|
51
57
|
// Convert to baseX string efficiently using array
|
|
52
58
|
/** @type {string[]} */
|
|
53
59
|
const digits = [];
|
|
54
|
-
if (value === ZERO) return ENCODE_TABLE[base][0];
|
|
55
60
|
while (value > ZERO) {
|
|
56
61
|
const remainder = Number(value % bigIntBase);
|
|
57
|
-
digits.push(
|
|
62
|
+
digits.push(alphabet[remainder]);
|
|
58
63
|
value /= bigIntBase;
|
|
59
64
|
}
|
|
65
|
+
// Pushed last so they land first after the reverse below.
|
|
66
|
+
for (let i = 0; i < zeros; i++) digits.push(alphabet[0]);
|
|
60
67
|
return digits.reverse().join("");
|
|
61
68
|
};
|
|
62
69
|
|
|
63
70
|
/**
|
|
71
|
+
* Returns buffer.
|
|
64
72
|
* @param {string} data string
|
|
65
73
|
* @param {Base} base base
|
|
66
74
|
* @returns {Buffer} buffer
|
|
67
75
|
*/
|
|
68
76
|
const decode = (data, base) => {
|
|
69
77
|
if (data.length === 0) return Buffer.from("");
|
|
70
|
-
const
|
|
78
|
+
const alphabet = ENCODE_TABLE[base];
|
|
79
|
+
const bigIntBase = BigInt(alphabet.length);
|
|
80
|
+
// Leading alphabet[0] chars decode back to leading zero bytes (inverse of encode).
|
|
81
|
+
const zeroChar = alphabet[0];
|
|
82
|
+
let zeros = 0;
|
|
83
|
+
while (zeros < data.length && data[zeros] === zeroChar) zeros++;
|
|
71
84
|
// Convert the baseX string to a BigInt value
|
|
72
85
|
let value = ZERO;
|
|
73
86
|
for (let i = 0; i < data.length; i++) {
|
|
74
|
-
const digit =
|
|
87
|
+
const digit = alphabet.indexOf(data[i]);
|
|
75
88
|
if (digit === -1) {
|
|
76
89
|
throw new Error(`Invalid character at position ${i}: ${data[i]}`);
|
|
77
90
|
}
|
|
78
91
|
value = value * bigIntBase + BigInt(digit);
|
|
79
92
|
}
|
|
80
|
-
//
|
|
81
|
-
if (value === ZERO) {
|
|
82
|
-
return Buffer.alloc(1);
|
|
83
|
-
}
|
|
84
|
-
// Determine buffer size efficiently by counting bytes
|
|
93
|
+
// Significant byte count of the numeric part (excludes the leading zeros above)
|
|
85
94
|
let temp = value;
|
|
86
|
-
let
|
|
95
|
+
let numLength = 0;
|
|
87
96
|
while (temp > ZERO) {
|
|
88
97
|
temp >>= EIGHT;
|
|
89
|
-
|
|
98
|
+
numLength++;
|
|
90
99
|
}
|
|
91
|
-
// Create buffer and fill
|
|
92
|
-
|
|
93
|
-
|
|
100
|
+
// Create buffer and fill the numeric part from right to left, leaving the
|
|
101
|
+
// leading `zeros` bytes as 0.
|
|
102
|
+
const buffer = Buffer.alloc(zeros + numLength);
|
|
103
|
+
for (let i = zeros + numLength - 1; i >= zeros; i--) {
|
|
94
104
|
buffer[i] = Number(value & FF);
|
|
95
105
|
value >>= EIGHT;
|
|
96
106
|
}
|
|
@@ -100,6 +110,7 @@ const decode = (data, base) => {
|
|
|
100
110
|
// Compatibility with the old hash libraries, they can return different structures, so let's stringify them firstly
|
|
101
111
|
|
|
102
112
|
/**
|
|
113
|
+
* Returns a string representation.
|
|
103
114
|
* @param {string | { toString: (radix: number) => string }} value value
|
|
104
115
|
* @param {string} encoding encoding
|
|
105
116
|
* @returns {string} string
|
|
@@ -113,6 +124,7 @@ const toString = (value, encoding) =>
|
|
|
113
124
|
);
|
|
114
125
|
|
|
115
126
|
/**
|
|
127
|
+
* Returns buffer.
|
|
116
128
|
* @param {Buffer | { toString: (radix: number) => string }} value value
|
|
117
129
|
* @returns {Buffer} buffer
|
|
118
130
|
*/
|
|
@@ -128,6 +140,7 @@ try {
|
|
|
128
140
|
}
|
|
129
141
|
|
|
130
142
|
/**
|
|
143
|
+
* Processes the provided hash.
|
|
131
144
|
* @param {Hash} hash hash
|
|
132
145
|
* @param {string | Buffer} data data
|
|
133
146
|
* @param {Encoding=} encoding encoding of the return value
|
|
@@ -159,11 +172,13 @@ const update = (hash, data, encoding) => {
|
|
|
159
172
|
};
|
|
160
173
|
|
|
161
174
|
/**
|
|
175
|
+
* Returns digest.
|
|
162
176
|
* @overload
|
|
163
177
|
* @param {Hash} hash hash
|
|
164
178
|
* @returns {Buffer} digest
|
|
165
179
|
*/
|
|
166
180
|
/**
|
|
181
|
+
* Returns digest.
|
|
167
182
|
* @overload
|
|
168
183
|
* @param {Hash} hash hash
|
|
169
184
|
* @param {undefined} encoding encoding of the return value
|
|
@@ -171,6 +186,7 @@ const update = (hash, data, encoding) => {
|
|
|
171
186
|
* @returns {Buffer} digest
|
|
172
187
|
*/
|
|
173
188
|
/**
|
|
189
|
+
* Returns digest.
|
|
174
190
|
* @overload
|
|
175
191
|
* @param {Hash} hash hash
|
|
176
192
|
* @param {Encoding} encoding encoding of the return value
|
|
@@ -178,6 +194,7 @@ const update = (hash, data, encoding) => {
|
|
|
178
194
|
* @returns {string} digest
|
|
179
195
|
*/
|
|
180
196
|
/**
|
|
197
|
+
* Returns digest.
|
|
181
198
|
* @param {Hash} hash hash
|
|
182
199
|
* @param {Encoding=} encoding encoding of the return value
|
|
183
200
|
* @param {boolean=} isSafe true when we await right types from digest(), otherwise false
|
package/lib/util/hash/md4.js
CHANGED
|
@@ -11,7 +11,7 @@ const create = require("./wasm-hash");
|
|
|
11
11
|
const md4 = new WebAssembly.Module(
|
|
12
12
|
Buffer.from(
|
|
13
13
|
// 2150 bytes
|
|
14
|
-
"
|
|
14
|
+
"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",
|
|
15
15
|
"base64"
|
|
16
16
|
)
|
|
17
17
|
);
|
|
@@ -14,6 +14,7 @@ const Hash = require("../Hash");
|
|
|
14
14
|
const MAX_SHORT_STRING = Math.floor((65536 - 64) / 4) & ~3;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
+
* Represents the wasm hash runtime component.
|
|
17
18
|
* @typedef {object} WasmExports
|
|
18
19
|
* @property {WebAssembly.Memory} memory
|
|
19
20
|
* @property {() => void} init
|
|
@@ -23,6 +24,7 @@ const MAX_SHORT_STRING = Math.floor((65536 - 64) / 4) & ~3;
|
|
|
23
24
|
|
|
24
25
|
class WasmHash extends Hash {
|
|
25
26
|
/**
|
|
27
|
+
* Creates an instance of WasmHash.
|
|
26
28
|
* @param {WebAssembly.Instance} instance wasm instance
|
|
27
29
|
* @param {WebAssembly.Instance[]} instancesPool pool of instances
|
|
28
30
|
* @param {number} chunkSize size of data chunks passed to wasm
|
|
@@ -93,6 +95,7 @@ class WasmHash extends Hash {
|
|
|
93
95
|
}
|
|
94
96
|
|
|
95
97
|
/**
|
|
98
|
+
* Update with short string.
|
|
96
99
|
* @param {string} data data
|
|
97
100
|
* @param {BufferEncoding=} encoding encoding
|
|
98
101
|
* @returns {void}
|
|
@@ -143,6 +146,7 @@ class WasmHash extends Hash {
|
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
/**
|
|
149
|
+
* Update with buffer.
|
|
146
150
|
* @param {Buffer} data data
|
|
147
151
|
* @returns {void}
|
|
148
152
|
*/
|
|
@@ -206,6 +210,7 @@ class WasmHash extends Hash {
|
|
|
206
210
|
}
|
|
207
211
|
|
|
208
212
|
/**
|
|
213
|
+
* Returns wasm hash.
|
|
209
214
|
* @param {WebAssembly.Module} wasmModule wasm module
|
|
210
215
|
* @param {WasmHash[]} instancesPool pool of instances
|
|
211
216
|
* @param {number} chunkSize size of data chunks passed to wasm
|
|
@@ -11,7 +11,7 @@ const create = require("./wasm-hash");
|
|
|
11
11
|
const xxhash64 = new WebAssembly.Module(
|
|
12
12
|
Buffer.from(
|
|
13
13
|
// 1160 bytes
|
|
14
|
-
"
|
|
14
|
+
"AGFzbQEAAAABCAJgAX8AYAAAAwQDAAEABQMBAAEGGgV+AUIAC34BQgALfgFCAAt+AUIAC34BQgALByIEBGluaXQAAQZ1cGRhdGUAAAVmaW5hbAACBm1lbW9yeQIACqgIA9QBAgF/BH4gAEUEQA8LIwQgAK18JAQjACECIwEhAyMCIQQjAyEFA0AgAiABKQMAQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+IQIgAyABKQMIQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+IQMgBCABKQMQQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+IQQgBSABKQMYQs/W077Sx6vZQn58Qh+JQoeVr6+Ytt6bnn9+IQUgAUEgaiIBIABJDQALIAIkACADJAEgBCQCIAUkAwswAELW64Lu6v2J9eAAJABCz9bTvtLHq9lCJAFCACQCQvnq0NDnyaHk4QAkA0IAJAQLngYCAn8CfiMEQgBSBH4jAEIBiSMBQgeJfCMCQgyJfCMDQhKJfCMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IwFCz9bTvtLHq9lCfkIfiUKHla+vmLbem55/foVCh5Wvr5i23puef35CnaO16oOxjYr6AH0jAkLP1tO+0ser2UJ+Qh+JQoeVr6+Ytt6bnn9+hUKHla+vmLbem55/fkKdo7Xqg7GNivoAfSMDQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9BULFz9my8eW66icLIwQgAK18fCEDA0AgAUEIaiICIABNBEAgAyABKQMAQs/W077Sx6vZQn5CH4lCh5Wvr5i23puef36FQhuJQoeVr6+Ytt6bnn9+Qp2jteqDsY2K+gB9IQMgAiEBDAELCyABQQRqIgIgAE0EQCADIAE1AgBCh5Wvr5i23puef36FQheJQs/W077Sx6vZQn5C+fPd8Zn2masWfCEDIAIhAQsDQCAAIAFHBEAgAyABMQAAQsXP2bLx5brqJ36FQguJQoeVr6+Ytt6bnn9+IQMgAUEBaiEBDAELC0EAIAMgA0IhiIVCz9bTvtLHq9lCfiIDQh2IIAOFQvnz3fGZ9pmrFn4iA0IgiCADhSIDQiCIIgRC//8Dg0IghiAEQoCA/P8Pg0IQiIQiBEL/gYCA8B+DQhCGIARCgP6DgIDgP4NCCIiEIgRCj4C8gPCBwAeDQgiGIARC8IHAh4CegPgAg0IEiIQiBEKGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gBEKw4MCBg4aMmDCEfDcDAEEIIANC/////w+DIgNC//8Dg0IghiADQoCA/P8Pg0IQiIQiA0L/gYCA8B+DQhCGIANCgP6DgIDgP4NCCIiEIgNCj4C8gPCBwAeDQgiGIANC8IHAh4CegPgAg0IEiIQiA0KGjJiw4MCBgwZ8QgSIQoGChIiQoMCAAYNCJ34gA0Kw4MCBg4aMmDCEfDcDAAs=",
|
|
15
15
|
"base64"
|
|
16
16
|
)
|
|
17
17
|
);
|
package/lib/util/identifier.js
CHANGED
|
@@ -6,11 +6,17 @@
|
|
|
6
6
|
|
|
7
7
|
const path = require("path");
|
|
8
8
|
|
|
9
|
+
// Any absolute path: POSIX (/foo) and every Windows form — drive-letter (C:\,
|
|
10
|
+
// C:/), UNC (\\, //), rooted (\, /); equals posix||win32 isAbsolute.
|
|
11
|
+
const ABSOLUTE_PATH_REGEXP = /^(?:[a-z]:)?[\\/]/i;
|
|
12
|
+
// Windows drive-letter absolute path only (C:\ or C:/), where a leading "/" is
|
|
13
|
+
// NOT absolute — used where POSIX paths must stay relative to a base.
|
|
9
14
|
const WINDOWS_ABS_PATH_REGEXP = /^[a-z]:[\\/]/i;
|
|
10
15
|
const SEGMENTS_SPLIT_REGEXP = /([|!])/;
|
|
11
16
|
const WINDOWS_PATH_SEPARATOR_REGEXP = /\\/g;
|
|
12
17
|
|
|
13
18
|
/**
|
|
19
|
+
* Relative path to request.
|
|
14
20
|
* @param {string} relativePath relative path
|
|
15
21
|
* @returns {string} request
|
|
16
22
|
*/
|
|
@@ -22,6 +28,7 @@ const relativePathToRequest = (relativePath) => {
|
|
|
22
28
|
};
|
|
23
29
|
|
|
24
30
|
/**
|
|
31
|
+
* Absolute to request.
|
|
25
32
|
* @param {string} context context for relative path
|
|
26
33
|
* @param {string} maybeAbsolutePath path to make relative
|
|
27
34
|
* @returns {string} relative path in request style
|
|
@@ -70,6 +77,7 @@ const absoluteToRequest = (context, maybeAbsolutePath) => {
|
|
|
70
77
|
};
|
|
71
78
|
|
|
72
79
|
/**
|
|
80
|
+
* Request to absolute.
|
|
73
81
|
* @param {string} context context for relative path
|
|
74
82
|
* @param {string} relativePath path
|
|
75
83
|
* @returns {string} absolute path
|
|
@@ -84,27 +92,32 @@ const requestToAbsolute = (context, relativePath) => {
|
|
|
84
92
|
/** @typedef {EXPECTED_OBJECT} AssociatedObjectForCache */
|
|
85
93
|
|
|
86
94
|
/**
|
|
95
|
+
* Defines the make cacheable result type used by this module.
|
|
87
96
|
* @template T
|
|
88
97
|
* @typedef {(value: string, cache?: AssociatedObjectForCache) => T} MakeCacheableResult
|
|
89
98
|
*/
|
|
90
99
|
|
|
91
100
|
/**
|
|
101
|
+
* Defines the bind cache result fn type used by this module.
|
|
92
102
|
* @template T
|
|
93
103
|
* @typedef {(value: string) => T} BindCacheResultFn
|
|
94
104
|
*/
|
|
95
105
|
|
|
96
106
|
/**
|
|
107
|
+
* Defines the bind cache type used by this module.
|
|
97
108
|
* @template T
|
|
98
109
|
* @typedef {(cache: AssociatedObjectForCache) => BindCacheResultFn<T>} BindCache
|
|
99
110
|
*/
|
|
100
111
|
|
|
101
112
|
/**
|
|
113
|
+
* Returns } cacheable function.
|
|
102
114
|
* @template T
|
|
103
115
|
* @param {((value: string) => T)} realFn real function
|
|
104
116
|
* @returns {MakeCacheableResult<T> & { bindCache: BindCache<T> }} cacheable function
|
|
105
117
|
*/
|
|
106
118
|
const makeCacheable = (realFn) => {
|
|
107
119
|
/**
|
|
120
|
+
* Defines the cache item type used by this module.
|
|
108
121
|
* @template T
|
|
109
122
|
* @typedef {Map<string, T>} CacheItem
|
|
110
123
|
*/
|
|
@@ -112,6 +125,7 @@ const makeCacheable = (realFn) => {
|
|
|
112
125
|
const cache = new WeakMap();
|
|
113
126
|
|
|
114
127
|
/**
|
|
128
|
+
* Returns cache item.
|
|
115
129
|
* @param {AssociatedObjectForCache} associatedObjectForCache an object to which the cache will be attached
|
|
116
130
|
* @returns {CacheItem<T>} cache item
|
|
117
131
|
*/
|
|
@@ -139,6 +153,7 @@ const makeCacheable = (realFn) => {
|
|
|
139
153
|
fn.bindCache = (associatedObjectForCache) => {
|
|
140
154
|
const cache = getCache(associatedObjectForCache);
|
|
141
155
|
/**
|
|
156
|
+
* Returns value.
|
|
142
157
|
* @param {string} str string
|
|
143
158
|
* @returns {T} value
|
|
144
159
|
*/
|
|
@@ -161,6 +176,7 @@ const makeCacheable = (realFn) => {
|
|
|
161
176
|
/** @typedef {(value: string, associatedObjectForCache?: AssociatedObjectForCache) => BindContextCacheForContextResultFn} BindContextCacheForContext */
|
|
162
177
|
|
|
163
178
|
/**
|
|
179
|
+
* Creates cacheable with context.
|
|
164
180
|
* @param {(context: string, identifier: string) => string} fn function
|
|
165
181
|
* @returns {MakeCacheableWithContextResult & { bindCache: BindCacheForContext, bindContextCache: BindContextCacheForContext }} cacheable function with context
|
|
166
182
|
*/
|
|
@@ -211,6 +227,7 @@ const makeCacheableWithContext = (fn) => {
|
|
|
211
227
|
}
|
|
212
228
|
|
|
213
229
|
/**
|
|
230
|
+
* Returns the returned relative path.
|
|
214
231
|
* @param {string} context context used to create relative path
|
|
215
232
|
* @param {string} identifier identifier used to create relative path
|
|
216
233
|
* @returns {string} the returned relative path
|
|
@@ -256,6 +273,7 @@ const makeCacheableWithContext = (fn) => {
|
|
|
256
273
|
}
|
|
257
274
|
|
|
258
275
|
/**
|
|
276
|
+
* Returns the returned relative path.
|
|
259
277
|
* @param {string} identifier identifier used to create relative path
|
|
260
278
|
* @returns {string} the returned relative path
|
|
261
279
|
*/
|
|
@@ -276,6 +294,7 @@ const makeCacheableWithContext = (fn) => {
|
|
|
276
294
|
};
|
|
277
295
|
|
|
278
296
|
/**
|
|
297
|
+
* Make paths relative.
|
|
279
298
|
* @param {string} context context for relative path
|
|
280
299
|
* @param {string} identifier identifier for path
|
|
281
300
|
* @returns {string} a converted relative path
|
|
@@ -287,6 +306,7 @@ const _makePathsRelative = (context, identifier) =>
|
|
|
287
306
|
.join("");
|
|
288
307
|
|
|
289
308
|
/**
|
|
309
|
+
* Make paths absolute.
|
|
290
310
|
* @param {string} context context for relative path
|
|
291
311
|
* @param {string} identifier identifier for path
|
|
292
312
|
* @returns {string} a converted relative path
|
|
@@ -298,6 +318,7 @@ const _makePathsAbsolute = (context, identifier) =>
|
|
|
298
318
|
.join("");
|
|
299
319
|
|
|
300
320
|
/**
|
|
321
|
+
* Returns a new request string avoiding absolute paths when possible.
|
|
301
322
|
* @param {string} context absolute context path
|
|
302
323
|
* @param {string} request any request string may containing absolute paths, query string, etc.
|
|
303
324
|
* @returns {string} a new request string avoiding absolute paths when possible
|
|
@@ -311,6 +332,7 @@ const _contextify = (context, request) =>
|
|
|
311
332
|
const contextify = makeCacheableWithContext(_contextify);
|
|
312
333
|
|
|
313
334
|
/**
|
|
335
|
+
* Returns a new request string using absolute paths when possible.
|
|
314
336
|
* @param {string} context absolute context path
|
|
315
337
|
* @param {string} request any request string
|
|
316
338
|
* @returns {string} a new request string using absolute paths when possible
|
|
@@ -332,6 +354,7 @@ const ZERO_ESCAPE_REGEXP = /\0(.)/g;
|
|
|
332
354
|
/** @typedef {{ resource: string, path: string, query: string }} ParsedResourceWithoutFragment */
|
|
333
355
|
|
|
334
356
|
/**
|
|
357
|
+
* Returns parsed parts.
|
|
335
358
|
* @param {string} str the path with query and fragment
|
|
336
359
|
* @returns {ParsedResource} parsed parts
|
|
337
360
|
*/
|
|
@@ -340,9 +363,10 @@ const _parseResource = (str) => {
|
|
|
340
363
|
|
|
341
364
|
// Handle `\0`
|
|
342
365
|
if (firstEscape !== -1) {
|
|
343
|
-
const match =
|
|
344
|
-
|
|
345
|
-
|
|
366
|
+
const match = PATH_QUERY_FRAGMENT_REGEXP.exec(str);
|
|
367
|
+
|
|
368
|
+
// malformed escaping (e.g. a trailing lone \0) never matches; treat as path
|
|
369
|
+
if (!match) return { resource: str, path: str, query: "", fragment: "" };
|
|
346
370
|
|
|
347
371
|
return {
|
|
348
372
|
resource: str,
|
|
@@ -398,9 +422,10 @@ const _parseResourceWithoutFragment = (str) => {
|
|
|
398
422
|
|
|
399
423
|
// Handle `\0`
|
|
400
424
|
if (firstEscape !== -1) {
|
|
401
|
-
const match =
|
|
402
|
-
|
|
403
|
-
|
|
425
|
+
const match = PATH_QUERY_REGEXP.exec(str);
|
|
426
|
+
|
|
427
|
+
// malformed escaping (e.g. a trailing lone \0) never matches; treat as path
|
|
428
|
+
if (!match) return { resource: str, path: str, query: "" };
|
|
404
429
|
|
|
405
430
|
return {
|
|
406
431
|
resource: str,
|
|
@@ -428,6 +453,7 @@ const _parseResourceWithoutFragment = (str) => {
|
|
|
428
453
|
};
|
|
429
454
|
|
|
430
455
|
/**
|
|
456
|
+
* Returns repeated ../ to leave the directory of the provided filename to be back on output dir.
|
|
431
457
|
* @param {string} filename the filename which should be undone
|
|
432
458
|
* @param {string} outputPath the output path that is restored (only relevant when filename contains "..")
|
|
433
459
|
* @param {boolean} enforceRelative true returns ./ for empty paths
|
|
@@ -460,12 +486,97 @@ const getUndoPath = (filename, outputPath, enforceRelative) => {
|
|
|
460
486
|
: append;
|
|
461
487
|
};
|
|
462
488
|
|
|
489
|
+
const HASH_REGEXP = /(?<!\0)#/g;
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Escape `#` characters that appear inside a path request's directory portion
|
|
493
|
+
* with the `\0#` escape recognized by enhanced-resolve, so a project located at
|
|
494
|
+
* a path like `/home/user/proj#1/` (or `./proj#1/`) resolves correctly. Applies
|
|
495
|
+
* to absolute paths (Unix or Windows) and relative paths (starting with `./` or
|
|
496
|
+
* `../`). Only triggers when a query string is present, because that is the case
|
|
497
|
+
* where the resolver's parseIdentifier fails (without a `?`, the resolver
|
|
498
|
+
* handles directory `#` via its own fallback). A `#` after the last path
|
|
499
|
+
* separator is left alone so that explicit fragment requests like
|
|
500
|
+
* `/abs/path/file.js#fragment` still behave the same. Bare module specifiers
|
|
501
|
+
* are not touched. Already-escaped `\0#` sequences are preserved so the
|
|
502
|
+
* explicit opt-out remains stable.
|
|
503
|
+
* @param {string} request request to potentially escape
|
|
504
|
+
* @returns {string} request with directory `#` characters escaped
|
|
505
|
+
*/
|
|
506
|
+
const escapeHashInPathRequest = (request) => {
|
|
507
|
+
if (request.length === 0) return request;
|
|
508
|
+
const queryStart = request.indexOf("?");
|
|
509
|
+
if (queryStart < 0) return request;
|
|
510
|
+
const hashStart = request.indexOf("#");
|
|
511
|
+
if (hashStart < 0 || hashStart >= queryStart) return request;
|
|
512
|
+
const c0 = request.charCodeAt(0);
|
|
513
|
+
const isAbsolute =
|
|
514
|
+
c0 === 47 /* "/" */ || WINDOWS_ABS_PATH_REGEXP.test(request);
|
|
515
|
+
let isRelative = false;
|
|
516
|
+
if (!isAbsolute && c0 === 46 /* "." */) {
|
|
517
|
+
const c1 = request.charCodeAt(1);
|
|
518
|
+
if (c1 === 47 || c1 === 92 /* "/" or "\" */) {
|
|
519
|
+
isRelative = true;
|
|
520
|
+
} else if (c1 === 46 /* "." */) {
|
|
521
|
+
const c2 = request.charCodeAt(2);
|
|
522
|
+
if (c2 === 47 || c2 === 92) isRelative = true;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
if (!isAbsolute && !isRelative) return request;
|
|
526
|
+
const lastSep = Math.max(
|
|
527
|
+
request.lastIndexOf("/", queryStart - 1),
|
|
528
|
+
request.lastIndexOf("\\", queryStart - 1)
|
|
529
|
+
);
|
|
530
|
+
if (hashStart >= lastSep) return request;
|
|
531
|
+
const pathPart = request.slice(0, lastSep);
|
|
532
|
+
return pathPart.replace(HASH_REGEXP, "\0#") + request.slice(lastSep);
|
|
533
|
+
};
|
|
534
|
+
|
|
535
|
+
const makePathsRelative = makeCacheableWithContext(_makePathsRelative);
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Turns a source path into a `webpack://`-prefixed, context-relative source
|
|
539
|
+
* URL, as used for the `sources` of module-level source maps.
|
|
540
|
+
* @param {string} context absolute context path
|
|
541
|
+
* @param {string} source a source path
|
|
542
|
+
* @param {AssociatedObjectForCache=} associatedObjectForCache an object to which the cache will be attached
|
|
543
|
+
* @returns {string} new source path
|
|
544
|
+
*/
|
|
545
|
+
const contextifySourceUrl = (context, source, associatedObjectForCache) => {
|
|
546
|
+
if (source.startsWith("webpack://")) return source;
|
|
547
|
+
return `webpack://${makePathsRelative(
|
|
548
|
+
context,
|
|
549
|
+
source,
|
|
550
|
+
associatedObjectForCache
|
|
551
|
+
)}`;
|
|
552
|
+
};
|
|
553
|
+
|
|
554
|
+
const LINE_SEPARATOR_REGEXP = /[\u2028\u2029]/g;
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* Quotes a string as a JS string literal safe to inline in generated code.
|
|
558
|
+
* `JSON.stringify` leaves U+2028/U+2029 raw, but both terminate a JS string
|
|
559
|
+
* literal (valid in JSON, not in JS), so escape them (matches JsonGenerator).
|
|
560
|
+
* @param {string} str raw string
|
|
561
|
+
* @returns {string} a quoted, inline-safe JS string literal
|
|
562
|
+
*/
|
|
563
|
+
const toJsStringLiteral = (str) =>
|
|
564
|
+
JSON.stringify(str).replace(LINE_SEPARATOR_REGEXP, (c) =>
|
|
565
|
+
c === "\u2029" ? "\\u2029" : "\\u2028"
|
|
566
|
+
);
|
|
567
|
+
|
|
568
|
+
module.exports.ABSOLUTE_PATH_REGEXP = ABSOLUTE_PATH_REGEXP;
|
|
569
|
+
module.exports.WINDOWS_ABS_PATH_REGEXP = WINDOWS_ABS_PATH_REGEXP;
|
|
463
570
|
module.exports.absolutify = absolutify;
|
|
464
571
|
module.exports.contextify = contextify;
|
|
572
|
+
module.exports.contextifySourceUrl = contextifySourceUrl;
|
|
573
|
+
module.exports.escapeHashInPathRequest = escapeHashInPathRequest;
|
|
465
574
|
module.exports.getUndoPath = getUndoPath;
|
|
575
|
+
module.exports.makeCacheable = makeCacheable;
|
|
466
576
|
module.exports.makePathsAbsolute = makeCacheableWithContext(_makePathsAbsolute);
|
|
467
|
-
module.exports.makePathsRelative =
|
|
577
|
+
module.exports.makePathsRelative = makePathsRelative;
|
|
468
578
|
module.exports.parseResource = makeCacheable(_parseResource);
|
|
469
579
|
module.exports.parseResourceWithoutFragment = makeCacheable(
|
|
470
580
|
_parseResourceWithoutFragment
|
|
471
581
|
);
|
|
582
|
+
module.exports.toJsStringLiteral = toJsStringLiteral;
|
|
@@ -0,0 +1,62 @@
|
|
|
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 { JAVASCRIPT_MODULE_TYPE_AUTO } = require("../ModuleTypeConstants");
|
|
9
|
+
const { parseResource } = require("./identifier");
|
|
10
|
+
|
|
11
|
+
/** @typedef {import("../NormalModuleFactory")} NormalModuleFactory */
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* When a built-in module type is only enabled implicitly (`experiments.css` /
|
|
15
|
+
* `experiments.html` resolved from their `"auto"` default), modules that reach
|
|
16
|
+
* the factory with loaders applied — an inline request or loaders injected via
|
|
17
|
+
* hooks (e.g. html-webpack-plugin's template loader) — keep the pre-existing
|
|
18
|
+
* behavior: the loader result is parsed as JavaScript, not as the built-in type.
|
|
19
|
+
* A `!=!` matchResource is an explicit re-type of the loader result and wins.
|
|
20
|
+
*
|
|
21
|
+
* TODO webpack 6: css/html are enabled unconditionally (`experiments.*: true`),
|
|
22
|
+
* so this implicit-only workaround can be removed together with the `"auto"`
|
|
23
|
+
* marker in `applyExperimentsDefaults`.
|
|
24
|
+
* @param {NormalModuleFactory} normalModuleFactory the normal module factory
|
|
25
|
+
* @param {string} pluginName name of the calling plugin, used for the tap
|
|
26
|
+
* @param {RegExp} test resource path test of the built-in default rule
|
|
27
|
+
* @param {string} type built-in module type assigned by that default rule
|
|
28
|
+
* @returns {void}
|
|
29
|
+
*/
|
|
30
|
+
module.exports = (normalModuleFactory, pluginName, test, type) => {
|
|
31
|
+
normalModuleFactory.hooks.createModule.tap(
|
|
32
|
+
pluginName,
|
|
33
|
+
(createData, _resolveData) => {
|
|
34
|
+
if (
|
|
35
|
+
createData.settings.type !== type ||
|
|
36
|
+
createData.loaders.length === 0 ||
|
|
37
|
+
createData.matchResource !== undefined ||
|
|
38
|
+
!test.test(parseResource(createData.resource).path)
|
|
39
|
+
) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// Drop the default rule's type-specific effects along with the type
|
|
43
|
+
createData.settings = {
|
|
44
|
+
...createData.settings,
|
|
45
|
+
type: JAVASCRIPT_MODULE_TYPE_AUTO,
|
|
46
|
+
parser: undefined,
|
|
47
|
+
generator: undefined,
|
|
48
|
+
resolve: undefined
|
|
49
|
+
};
|
|
50
|
+
createData.type = JAVASCRIPT_MODULE_TYPE_AUTO;
|
|
51
|
+
createData.parser = normalModuleFactory.getParser(
|
|
52
|
+
JAVASCRIPT_MODULE_TYPE_AUTO
|
|
53
|
+
);
|
|
54
|
+
createData.parserOptions = undefined;
|
|
55
|
+
createData.generator = normalModuleFactory.getGenerator(
|
|
56
|
+
JAVASCRIPT_MODULE_TYPE_AUTO
|
|
57
|
+
);
|
|
58
|
+
createData.generatorOptions = undefined;
|
|
59
|
+
createData.resolveOptions = undefined;
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
};
|