webpack 5.97.1 → 5.104.1
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 +368 -434
- package/bin/webpack.js +15 -9
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/log.js +15 -15
- package/hot/only-dev-server.js +19 -4
- package/hot/poll.js +1 -0
- package/lib/APIPlugin.js +48 -50
- package/lib/AbstractMethodError.js +1 -0
- package/lib/AsyncDependenciesBlock.js +4 -5
- package/lib/AutomaticPrefetchPlugin.js +22 -22
- package/lib/BannerPlugin.js +35 -40
- package/lib/Cache.js +12 -9
- package/lib/CacheFacade.js +13 -13
- package/lib/CaseSensitiveModulesWarning.js +6 -6
- package/lib/Chunk.js +68 -47
- package/lib/ChunkGraph.js +174 -95
- package/lib/ChunkGroup.js +32 -24
- package/lib/ChunkTemplate.js +8 -8
- package/lib/CleanPlugin.js +90 -42
- package/lib/CodeGenerationResults.js +12 -9
- package/lib/CompatibilityPlugin.js +70 -21
- package/lib/Compilation.js +827 -550
- package/lib/Compiler.js +137 -109
- package/lib/ConcatenationScope.js +45 -8
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +89 -59
- package/lib/ContextExclusionPlugin.js +5 -4
- package/lib/ContextModule.js +66 -51
- package/lib/ContextModuleFactory.js +51 -30
- package/lib/ContextReplacementPlugin.js +89 -34
- package/lib/CssModule.js +8 -4
- package/lib/DefinePlugin.js +209 -57
- package/lib/DelegatedModule.js +34 -23
- package/lib/DelegatedModuleFactoryPlugin.js +27 -24
- package/lib/DelegatedPlugin.js +4 -2
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +37 -19
- package/lib/DependencyTemplate.js +2 -0
- package/lib/DependencyTemplates.js +5 -6
- package/lib/DllEntryPlugin.js +8 -4
- package/lib/DllModule.js +11 -12
- package/lib/DllModuleFactory.js +2 -2
- package/lib/DllPlugin.js +9 -6
- package/lib/DllReferencePlugin.js +60 -65
- package/lib/DotenvPlugin.js +462 -0
- package/lib/DynamicEntryPlugin.js +8 -8
- package/lib/EntryOptionPlugin.js +8 -6
- package/lib/EntryPlugin.js +5 -3
- package/lib/Entrypoint.js +19 -0
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EnvironmentPlugin.js +26 -19
- package/lib/ErrorHelpers.js +6 -6
- package/lib/EvalDevToolModulePlugin.js +17 -14
- package/lib/EvalSourceMapDevToolPlugin.js +156 -142
- package/lib/ExportsInfo.js +180 -115
- package/lib/ExportsInfoApiPlugin.js +2 -2
- package/lib/ExternalModule.js +256 -102
- package/lib/ExternalModuleFactoryPlugin.js +66 -29
- package/lib/ExternalsPlugin.js +57 -2
- package/lib/FileSystemInfo.js +313 -247
- package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
- package/lib/FlagDependencyExportsPlugin.js +29 -19
- package/lib/FlagDependencyUsagePlugin.js +9 -10
- package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
- package/lib/Generator.js +43 -10
- package/lib/GraphHelpers.js +11 -3
- package/lib/HookWebpackError.js +35 -7
- package/lib/HotModuleReplacementPlugin.js +149 -108
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnoreErrorModuleFactory.js +2 -2
- package/lib/IgnorePlugin.js +16 -13
- package/lib/IgnoreWarningsPlugin.js +6 -4
- package/lib/InitFragment.js +41 -23
- package/lib/InvalidDependenciesModuleWarning.js +2 -3
- package/lib/JavascriptMetaInfoPlugin.js +2 -4
- package/lib/LibManifestPlugin.js +12 -13
- package/lib/LoaderOptionsPlugin.js +12 -14
- package/lib/LoaderTargetPlugin.js +5 -3
- package/lib/MainTemplate.js +18 -29
- package/lib/ManifestPlugin.js +235 -0
- package/lib/Module.js +138 -60
- package/lib/ModuleBuildError.js +4 -2
- package/lib/ModuleDependencyError.js +4 -3
- package/lib/ModuleDependencyWarning.js +4 -3
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFactory.js +10 -3
- package/lib/ModuleFilenameHelpers.js +63 -60
- package/lib/ModuleGraph.js +195 -70
- package/lib/ModuleGraphConnection.js +14 -20
- package/lib/ModuleInfoHeaderPlugin.js +15 -16
- package/lib/ModuleNotFoundError.js +1 -1
- package/lib/ModuleParseError.js +8 -4
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTemplate.js +7 -8
- package/lib/ModuleTypeConstants.js +37 -15
- package/lib/ModuleWarning.js +1 -1
- package/lib/MultiCompiler.js +64 -49
- package/lib/MultiStats.js +19 -14
- package/lib/MultiWatching.js +7 -11
- package/lib/NoEmitOnErrorsPlugin.js +5 -3
- package/lib/NodeStuffPlugin.js +438 -126
- package/lib/NormalModule.js +322 -201
- package/lib/NormalModuleFactory.js +230 -117
- package/lib/NormalModuleReplacementPlugin.js +37 -39
- package/lib/NullFactory.js +3 -2
- package/lib/OptimizationStages.js +1 -1
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +5 -3
- package/lib/PlatformPlugin.js +3 -1
- package/lib/PrefetchPlugin.js +6 -4
- package/lib/ProgressPlugin.js +48 -49
- package/lib/ProvidePlugin.js +7 -5
- package/lib/RawModule.js +26 -12
- package/lib/RecordIdsPlugin.js +88 -110
- package/lib/RequestShortener.js +3 -1
- package/lib/ResolverFactory.js +15 -14
- package/lib/RuntimeGlobals.js +216 -153
- package/lib/RuntimeModule.js +7 -6
- package/lib/RuntimePlugin.js +115 -62
- package/lib/RuntimeTemplate.js +248 -76
- package/lib/SelfModuleFactory.js +2 -2
- package/lib/SizeFormatHelpers.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
- package/lib/SourceMapDevToolPlugin.js +72 -59
- package/lib/Stats.js +2 -3
- package/lib/Template.js +31 -24
- package/lib/TemplatedPathPlugin.js +24 -21
- package/lib/UseStrictPlugin.js +1 -1
- package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
- package/lib/WarnDeprecatedOptionPlugin.js +7 -8
- package/lib/WarnNoModeSetPlugin.js +3 -1
- package/lib/WatchIgnorePlugin.js +11 -9
- package/lib/Watching.js +27 -29
- package/lib/WebpackError.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +4 -5
- package/lib/WebpackOptionsApply.js +263 -135
- package/lib/asset/AssetBytesGenerator.js +171 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +285 -223
- package/lib/asset/AssetModulesPlugin.js +103 -41
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +41 -17
- package/lib/asset/RawDataUrlModule.js +17 -9
- package/lib/async-modules/AsyncModuleHelpers.js +52 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
- package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
- package/lib/buildChunkGraph.js +36 -17
- package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
- package/lib/cache/IdleFileCachePlugin.js +22 -20
- package/lib/cache/MemoryCachePlugin.js +3 -3
- package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
- package/lib/cache/PackFileCacheStrategy.js +198 -170
- package/lib/cache/ResolverCachePlugin.js +58 -48
- package/lib/cache/getLazyHashedEtag.js +5 -4
- package/lib/cli.js +197 -39
- package/lib/config/browserslistTargetHandler.js +110 -85
- package/lib/config/defaults.js +514 -113
- package/lib/config/normalization.js +91 -64
- package/lib/config/target.js +30 -18
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +16 -15
- package/lib/container/ContainerEntryModuleFactory.js +2 -2
- package/lib/container/ContainerPlugin.js +5 -6
- package/lib/container/ContainerReferencePlugin.js +27 -30
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +19 -14
- package/lib/container/FallbackModuleFactory.js +2 -2
- package/lib/container/HoistContainerReferencesPlugin.js +7 -7
- package/lib/container/ModuleFederationPlugin.js +4 -4
- package/lib/container/RemoteModule.js +14 -14
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/container/options.js +9 -9
- package/lib/css/CssGenerator.js +366 -74
- package/lib/css/CssLoadingRuntimeModule.js +26 -16
- package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
- package/lib/css/CssModulesPlugin.js +191 -142
- package/lib/css/CssParser.js +1756 -740
- package/lib/css/walkCssTokens.js +180 -67
- package/lib/debug/ProfilingPlugin.js +135 -51
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
- package/lib/dependencies/AMDPlugin.js +18 -11
- package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
- package/lib/dependencies/AMDRequireContextDependency.js +2 -1
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
- package/lib/dependencies/AMDRuntimeModules.js +3 -1
- package/lib/dependencies/CachedConstDependency.js +24 -18
- package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
- package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
- package/lib/dependencies/CommonJsPlugin.js +29 -18
- package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +10 -5
- package/lib/dependencies/ContextDependencyHelpers.js +21 -13
- package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
- package/lib/dependencies/ContextElementDependency.js +23 -12
- package/lib/dependencies/CssIcssExportDependency.js +402 -22
- package/lib/dependencies/CssIcssImportDependency.js +116 -51
- package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
- package/lib/dependencies/CssImportDependency.js +17 -14
- package/lib/dependencies/CssUrlDependency.js +8 -13
- package/lib/dependencies/DynamicExports.js +19 -19
- package/lib/dependencies/ExportsInfoDependency.js +13 -10
- package/lib/dependencies/ExternalModuleDependency.js +7 -7
- package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
- package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
- package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
- package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
- package/lib/dependencies/HarmonyExports.js +5 -5
- package/lib/dependencies/HarmonyImportDependency.js +92 -45
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
- package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
- package/lib/dependencies/ImportContextDependency.js +15 -1
- package/lib/dependencies/ImportDependency.js +25 -7
- package/lib/dependencies/ImportEagerDependency.js +7 -5
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
- package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
- package/lib/dependencies/ImportMetaPlugin.js +172 -20
- package/lib/dependencies/ImportParserPlugin.js +327 -49
- package/lib/dependencies/ImportPhase.js +121 -0
- package/lib/dependencies/ImportPlugin.js +3 -1
- package/lib/dependencies/ImportWeakDependency.js +7 -5
- package/lib/dependencies/JsonExportsDependency.js +54 -28
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +24 -25
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +14 -13
- package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +8 -10
- package/lib/dependencies/PureExpressionDependency.js +1 -2
- package/lib/dependencies/RequireContextDependency.js +2 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
- package/lib/dependencies/RequireContextPlugin.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
- package/lib/dependencies/RequireEnsurePlugin.js +6 -6
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
- package/lib/dependencies/RequireIncludePlugin.js +1 -0
- package/lib/dependencies/RequireResolveContextDependency.js +1 -1
- package/lib/dependencies/RequireResolveDependency.js +3 -3
- package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/SystemPlugin.js +4 -4
- package/lib/dependencies/URLContextDependency.js +65 -0
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +18 -159
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +8 -6
- package/lib/dependencies/WorkerPlugin.js +131 -67
- package/lib/dependencies/getFunctionExpression.js +2 -2
- package/lib/dependencies/processExportInfo.js +4 -4
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
- package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
- package/lib/formatLocation.js +2 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
- package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
- package/lib/hmr/LazyCompilationPlugin.js +67 -54
- package/lib/hmr/lazyCompilationBackend.js +23 -18
- package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
- package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
- package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
- package/lib/ids/HashedModuleIdsPlugin.js +15 -13
- package/lib/ids/IdHelpers.js +66 -49
- package/lib/ids/NamedChunkIdsPlugin.js +14 -17
- package/lib/ids/NamedModuleIdsPlugin.js +12 -14
- package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
- package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
- package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
- package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
- package/lib/ids/SyncModuleIdsPlugin.js +18 -13
- package/lib/index.js +54 -14
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
- package/lib/javascript/BasicEvaluatedExpression.js +26 -18
- package/lib/javascript/ChunkFormatHelpers.js +70 -0
- package/lib/javascript/ChunkHelpers.js +17 -5
- package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
- package/lib/javascript/JavascriptGenerator.js +122 -100
- package/lib/javascript/JavascriptModulesPlugin.js +332 -152
- package/lib/javascript/JavascriptParser.js +1488 -1052
- package/lib/javascript/JavascriptParserHelpers.js +48 -47
- package/lib/javascript/StartupHelpers.js +23 -22
- package/lib/json/JsonData.js +4 -4
- package/lib/json/JsonGenerator.js +66 -32
- package/lib/json/JsonModulesPlugin.js +16 -6
- package/lib/json/JsonParser.js +23 -8
- package/lib/library/AbstractLibraryPlugin.js +45 -10
- package/lib/library/AmdLibraryPlugin.js +7 -5
- package/lib/library/AssignLibraryPlugin.js +71 -17
- package/lib/library/EnableLibraryPlugin.js +51 -25
- package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +230 -18
- package/lib/library/SystemLibraryPlugin.js +29 -11
- package/lib/library/UmdLibraryPlugin.js +35 -32
- package/lib/logging/Logger.js +18 -15
- package/lib/logging/createConsoleLogger.js +27 -27
- package/lib/logging/runtime.js +11 -11
- package/lib/logging/truncateArgs.js +5 -5
- package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
- package/lib/node/NodeEnvironmentPlugin.js +9 -3
- package/lib/node/NodeTargetPlugin.js +9 -1
- package/lib/node/NodeTemplatePlugin.js +2 -2
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
- package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
- package/lib/node/nodeConsole.js +12 -7
- package/lib/optimize/AggressiveMergingPlugin.js +46 -47
- package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
- package/lib/optimize/ConcatenatedModule.js +620 -251
- package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
- package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
- package/lib/optimize/InnerGraph.js +139 -124
- package/lib/optimize/InnerGraphPlugin.js +29 -24
- package/lib/optimize/LimitChunkCountPlugin.js +32 -8
- package/lib/optimize/MangleExportsPlugin.js +22 -22
- package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
- package/lib/optimize/MinChunkSizePlugin.js +12 -7
- package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
- package/lib/optimize/RealContentHashPlugin.js +58 -44
- package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
- package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
- package/lib/optimize/RuntimeChunkPlugin.js +22 -25
- package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
- package/lib/optimize/SplitChunksPlugin.js +209 -158
- package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
- package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
- package/lib/performance/SizeLimitsPlugin.js +8 -5
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicEffectRulePlugin.js +14 -5
- package/lib/rules/BasicMatcherRulePlugin.js +18 -7
- package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
- package/lib/rules/RuleSetCompiler.js +73 -32
- package/lib/rules/UseEffectRulePlugin.js +61 -25
- package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +9 -31
- package/lib/schemes/FileUriPlugin.js +11 -6
- package/lib/schemes/HttpUriPlugin.js +381 -261
- package/lib/schemes/VirtualUrlPlugin.js +222 -0
- package/lib/serialization/AggregateErrorSerializer.js +41 -0
- package/lib/serialization/BinaryMiddleware.js +51 -33
- package/lib/serialization/ErrorObjectSerializer.js +7 -2
- package/lib/serialization/FileMiddleware.js +101 -71
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +130 -54
- package/lib/serialization/PlainObjectSerializer.js +1 -1
- package/lib/serialization/Serializer.js +38 -20
- package/lib/serialization/SerializerMiddleware.js +121 -49
- package/lib/serialization/SingleItemMiddleware.js +9 -7
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +9 -9
- package/lib/sharing/ConsumeSharedPlugin.js +14 -14
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
- package/lib/sharing/ProvideSharedModule.js +9 -11
- package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
- package/lib/sharing/ProvideSharedPlugin.js +15 -10
- package/lib/sharing/SharePlugin.js +3 -4
- package/lib/sharing/ShareRuntimeModule.js +7 -6
- package/lib/sharing/resolveMatchedConfigs.js +27 -13
- package/lib/sharing/utils.js +37 -43
- package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
- package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
- package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
- package/lib/stats/StatsFactory.js +75 -32
- package/lib/stats/StatsPrinter.js +71 -51
- package/lib/url/URLParserPlugin.js +264 -0
- package/lib/util/ArrayHelpers.js +6 -8
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +11 -10
- package/lib/util/Hash.js +37 -5
- package/lib/util/IterableHelpers.js +4 -4
- package/lib/util/LazyBucketSortedSet.js +46 -27
- package/lib/util/LazySet.js +16 -10
- package/lib/util/MapHelpers.js +1 -1
- package/lib/util/ParallelismFactorCalculator.js +2 -2
- package/lib/util/Semaphore.js +3 -3
- package/lib/util/SetHelpers.js +6 -6
- package/lib/util/SortableSet.js +11 -9
- package/lib/util/StackedCacheMap.js +2 -2
- package/lib/util/StackedMap.js +3 -3
- package/lib/util/StringXor.js +2 -1
- package/lib/util/TupleQueue.js +11 -8
- package/lib/util/TupleSet.js +44 -19
- package/lib/util/URLAbsoluteSpecifier.js +3 -4
- package/lib/util/WeakTupleMap.js +56 -42
- package/lib/util/binarySearchBounds.js +4 -3
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +171 -107
- package/lib/util/comparators.js +265 -162
- package/lib/util/compileBooleanMatcher.js +120 -41
- package/lib/util/concatenate.js +20 -16
- package/lib/util/conventions.js +73 -74
- package/lib/util/create-schema-validation.js +8 -8
- package/lib/util/createHash.js +32 -135
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +119 -116
- package/lib/util/deterministicGrouping.js +56 -47
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/extractUrlAndGlobal.js +1 -1
- package/lib/util/findGraphRoots.js +19 -9
- package/lib/util/fs.js +169 -141
- package/lib/util/hash/BatchedHash.js +50 -10
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +59 -17
- package/lib/util/identifier.js +124 -61
- package/lib/util/internalSerializables.js +4 -6
- package/lib/util/magicComment.js +9 -5
- package/lib/util/makeSerializable.js +2 -2
- package/lib/util/memoize.js +5 -2
- package/lib/util/objectToMap.js +3 -2
- package/lib/util/processAsyncTree.js +5 -5
- package/lib/util/propertyAccess.js +1 -1
- package/lib/util/propertyName.js +2 -3
- package/lib/util/registerExternalSerializer.js +16 -20
- package/lib/util/removeBOM.js +25 -0
- package/lib/util/runtime.js +72 -56
- package/lib/util/semver.js +44 -33
- package/lib/util/serialization.js +56 -56
- package/lib/util/smartGrouping.js +42 -27
- package/lib/util/source.js +5 -4
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/validateSchema.js +7 -9
- package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
- package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
- package/lib/wasm-sync/WebAssemblyParser.js +10 -17
- package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
- package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
- package/lib/web/FetchCompileWasmPlugin.js +6 -8
- package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +107 -87
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
- package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
- package/module.d.ts +5 -0
- package/package.json +149 -129
- package/schemas/WebpackOptions.check.d.ts +1 -1
- package/schemas/WebpackOptions.check.js +2 -2
- package/schemas/WebpackOptions.json +543 -190
- package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
- package/schemas/plugins/BannerPlugin.check.js +2 -2
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllPlugin.check.d.ts +1 -1
- package/schemas/plugins/DllPlugin.check.js +1 -1
- package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/IgnorePlugin.check.js +1 -1
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
- package/schemas/plugins/ManifestPlugin.check.js +6 -0
- package/schemas/plugins/ManifestPlugin.json +98 -0
- package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
- package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
- package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
- package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
- package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
- package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
- package/schemas/plugins/container/ExternalsType.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
- package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
- package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
- package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +2 -2
- package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
- package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
- package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
- package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
- package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
- package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
- package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
- package/types.d.ts +5115 -1863
- package/SECURITY.md +0 -9
- package/lib/ModuleSourceTypesConstants.js +0 -112
- package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
- package/lib/library/ModernModuleLibraryPlugin.js +0 -144
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
- package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
- package/schemas/plugins/JsonModulesPluginParser.json +0 -12
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/util/identifier.js
CHANGED
|
@@ -10,16 +10,11 @@ const WINDOWS_ABS_PATH_REGEXP = /^[a-zA-Z]:[\\/]/;
|
|
|
10
10
|
const SEGMENTS_SPLIT_REGEXP = /([|!])/;
|
|
11
11
|
const WINDOWS_PATH_SEPARATOR_REGEXP = /\\/g;
|
|
12
12
|
|
|
13
|
-
/**
|
|
14
|
-
* @typedef {object} MakeRelativePathsCache
|
|
15
|
-
* @property {Map<string, Map<string, string>>=} relativePaths
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
13
|
/**
|
|
19
14
|
* @param {string} relativePath relative path
|
|
20
15
|
* @returns {string} request
|
|
21
16
|
*/
|
|
22
|
-
const relativePathToRequest = relativePath => {
|
|
17
|
+
const relativePathToRequest = (relativePath) => {
|
|
23
18
|
if (relativePath === "") return "./.";
|
|
24
19
|
if (relativePath === "..") return "../.";
|
|
25
20
|
if (relativePath.startsWith("../")) return relativePath;
|
|
@@ -80,44 +75,47 @@ const absoluteToRequest = (context, maybeAbsolutePath) => {
|
|
|
80
75
|
* @returns {string} absolute path
|
|
81
76
|
*/
|
|
82
77
|
const requestToAbsolute = (context, relativePath) => {
|
|
83
|
-
if (relativePath.startsWith("./") || relativePath.startsWith("../"))
|
|
78
|
+
if (relativePath.startsWith("./") || relativePath.startsWith("../")) {
|
|
84
79
|
return path.join(context, relativePath);
|
|
80
|
+
}
|
|
85
81
|
return relativePath;
|
|
86
82
|
};
|
|
87
83
|
|
|
84
|
+
/** @typedef {EXPECTED_OBJECT} AssociatedObjectForCache */
|
|
85
|
+
|
|
88
86
|
/**
|
|
89
87
|
* @template T
|
|
90
|
-
* @typedef {
|
|
88
|
+
* @typedef {(value: string, cache?: AssociatedObjectForCache) => T} MakeCacheableResult
|
|
91
89
|
*/
|
|
92
90
|
|
|
93
91
|
/**
|
|
94
92
|
* @template T
|
|
95
|
-
* @typedef {
|
|
93
|
+
* @typedef {(value: string) => T} BindCacheResultFn
|
|
96
94
|
*/
|
|
97
95
|
|
|
98
96
|
/**
|
|
99
97
|
* @template T
|
|
100
|
-
* @typedef {
|
|
98
|
+
* @typedef {(cache: AssociatedObjectForCache) => BindCacheResultFn<T>} BindCache
|
|
101
99
|
*/
|
|
102
100
|
|
|
103
101
|
/**
|
|
104
102
|
* @template T
|
|
105
|
-
* @param {(
|
|
103
|
+
* @param {((value: string) => T)} realFn real function
|
|
106
104
|
* @returns {MakeCacheableResult<T> & { bindCache: BindCache<T> }} cacheable function
|
|
107
105
|
*/
|
|
108
|
-
const makeCacheable = realFn => {
|
|
106
|
+
const makeCacheable = (realFn) => {
|
|
109
107
|
/**
|
|
110
108
|
* @template T
|
|
111
109
|
* @typedef {Map<string, T>} CacheItem
|
|
112
110
|
*/
|
|
113
|
-
/** @type {WeakMap<
|
|
111
|
+
/** @type {WeakMap<AssociatedObjectForCache, CacheItem<T>>} */
|
|
114
112
|
const cache = new WeakMap();
|
|
115
113
|
|
|
116
114
|
/**
|
|
117
|
-
* @param {
|
|
115
|
+
* @param {AssociatedObjectForCache} associatedObjectForCache an object to which the cache will be attached
|
|
118
116
|
* @returns {CacheItem<T>} cache item
|
|
119
117
|
*/
|
|
120
|
-
const getCache = associatedObjectForCache => {
|
|
118
|
+
const getCache = (associatedObjectForCache) => {
|
|
121
119
|
const entry = cache.get(associatedObjectForCache);
|
|
122
120
|
if (entry !== undefined) return entry;
|
|
123
121
|
/** @type {Map<string, T>} */
|
|
@@ -138,13 +136,13 @@ const makeCacheable = realFn => {
|
|
|
138
136
|
};
|
|
139
137
|
|
|
140
138
|
/** @type {BindCache<T>} */
|
|
141
|
-
fn.bindCache = associatedObjectForCache => {
|
|
139
|
+
fn.bindCache = (associatedObjectForCache) => {
|
|
142
140
|
const cache = getCache(associatedObjectForCache);
|
|
143
141
|
/**
|
|
144
142
|
* @param {string} str string
|
|
145
143
|
* @returns {T} value
|
|
146
144
|
*/
|
|
147
|
-
return str => {
|
|
145
|
+
return (str) => {
|
|
148
146
|
const entry = cache.get(str);
|
|
149
147
|
if (entry !== undefined) return entry;
|
|
150
148
|
const result = realFn(str);
|
|
@@ -156,18 +154,18 @@ const makeCacheable = realFn => {
|
|
|
156
154
|
return fn;
|
|
157
155
|
};
|
|
158
156
|
|
|
159
|
-
/** @typedef {
|
|
160
|
-
/** @typedef {
|
|
161
|
-
/** @typedef {
|
|
162
|
-
/** @typedef {
|
|
163
|
-
/** @typedef {
|
|
157
|
+
/** @typedef {(context: string, value: string, associatedObjectForCache?: AssociatedObjectForCache) => string} MakeCacheableWithContextResult */
|
|
158
|
+
/** @typedef {(context: string, value: string) => string} BindCacheForContextResultFn */
|
|
159
|
+
/** @typedef {(value: string) => string} BindContextCacheForContextResultFn */
|
|
160
|
+
/** @typedef {(associatedObjectForCache?: AssociatedObjectForCache) => BindCacheForContextResultFn} BindCacheForContext */
|
|
161
|
+
/** @typedef {(value: string, associatedObjectForCache?: AssociatedObjectForCache) => BindContextCacheForContextResultFn} BindContextCacheForContext */
|
|
164
162
|
|
|
165
163
|
/**
|
|
166
|
-
* @param {
|
|
164
|
+
* @param {(context: string, identifier: string) => string} fn function
|
|
167
165
|
* @returns {MakeCacheableWithContextResult & { bindCache: BindCacheForContext, bindContextCache: BindContextCacheForContext }} cacheable function with context
|
|
168
166
|
*/
|
|
169
|
-
const makeCacheableWithContext = fn => {
|
|
170
|
-
/** @type {WeakMap<
|
|
167
|
+
const makeCacheableWithContext = (fn) => {
|
|
168
|
+
/** @type {WeakMap<AssociatedObjectForCache, Map<string, Map<string, string>>>} */
|
|
171
169
|
const cache = new WeakMap();
|
|
172
170
|
|
|
173
171
|
/** @type {MakeCacheableWithContextResult & { bindCache: BindCacheForContext, bindContextCache: BindContextCacheForContext }} */
|
|
@@ -197,7 +195,7 @@ const makeCacheableWithContext = fn => {
|
|
|
197
195
|
};
|
|
198
196
|
|
|
199
197
|
/** @type {BindCacheForContext} */
|
|
200
|
-
cachedFn.bindCache = associatedObjectForCache => {
|
|
198
|
+
cachedFn.bindCache = (associatedObjectForCache) => {
|
|
201
199
|
let innerCache;
|
|
202
200
|
if (associatedObjectForCache) {
|
|
203
201
|
innerCache = cache.get(associatedObjectForCache);
|
|
@@ -256,7 +254,7 @@ const makeCacheableWithContext = fn => {
|
|
|
256
254
|
* @param {string} identifier identifier used to create relative path
|
|
257
255
|
* @returns {string} the returned relative path
|
|
258
256
|
*/
|
|
259
|
-
const boundFn = identifier => {
|
|
257
|
+
const boundFn = (identifier) => {
|
|
260
258
|
const cachedResult = innerSubCache.get(identifier);
|
|
261
259
|
if (cachedResult !== undefined) {
|
|
262
260
|
return cachedResult;
|
|
@@ -280,11 +278,9 @@ const makeCacheableWithContext = fn => {
|
|
|
280
278
|
const _makePathsRelative = (context, identifier) =>
|
|
281
279
|
identifier
|
|
282
280
|
.split(SEGMENTS_SPLIT_REGEXP)
|
|
283
|
-
.map(str => absoluteToRequest(context, str))
|
|
281
|
+
.map((str) => absoluteToRequest(context, str))
|
|
284
282
|
.join("");
|
|
285
283
|
|
|
286
|
-
module.exports.makePathsRelative = makeCacheableWithContext(_makePathsRelative);
|
|
287
|
-
|
|
288
284
|
/**
|
|
289
285
|
* @param {string} context context for relative path
|
|
290
286
|
* @param {string} identifier identifier for path
|
|
@@ -293,11 +289,9 @@ module.exports.makePathsRelative = makeCacheableWithContext(_makePathsRelative);
|
|
|
293
289
|
const _makePathsAbsolute = (context, identifier) =>
|
|
294
290
|
identifier
|
|
295
291
|
.split(SEGMENTS_SPLIT_REGEXP)
|
|
296
|
-
.map(str => requestToAbsolute(context, str))
|
|
292
|
+
.map((str) => requestToAbsolute(context, str))
|
|
297
293
|
.join("");
|
|
298
294
|
|
|
299
|
-
module.exports.makePathsAbsolute = makeCacheableWithContext(_makePathsAbsolute);
|
|
300
|
-
|
|
301
295
|
/**
|
|
302
296
|
* @param {string} context absolute context path
|
|
303
297
|
* @param {string} request any request string may containing absolute paths, query string, etc.
|
|
@@ -306,11 +300,10 @@ module.exports.makePathsAbsolute = makeCacheableWithContext(_makePathsAbsolute);
|
|
|
306
300
|
const _contextify = (context, request) =>
|
|
307
301
|
request
|
|
308
302
|
.split("!")
|
|
309
|
-
.map(r => absoluteToRequest(context, r))
|
|
303
|
+
.map((r) => absoluteToRequest(context, r))
|
|
310
304
|
.join("!");
|
|
311
305
|
|
|
312
306
|
const contextify = makeCacheableWithContext(_contextify);
|
|
313
|
-
module.exports.contextify = contextify;
|
|
314
307
|
|
|
315
308
|
/**
|
|
316
309
|
* @param {string} context absolute context path
|
|
@@ -320,15 +313,15 @@ module.exports.contextify = contextify;
|
|
|
320
313
|
const _absolutify = (context, request) =>
|
|
321
314
|
request
|
|
322
315
|
.split("!")
|
|
323
|
-
.map(r => requestToAbsolute(context, r))
|
|
316
|
+
.map((r) => requestToAbsolute(context, r))
|
|
324
317
|
.join("!");
|
|
325
318
|
|
|
326
319
|
const absolutify = makeCacheableWithContext(_absolutify);
|
|
327
|
-
module.exports.absolutify = absolutify;
|
|
328
320
|
|
|
329
321
|
const PATH_QUERY_FRAGMENT_REGEXP =
|
|
330
322
|
/^((?:\0.|[^?#\0])*)(\?(?:\0.|[^#\0])*)?(#.*)?$/;
|
|
331
323
|
const PATH_QUERY_REGEXP = /^((?:\0.|[^?\0])*)(\?.*)?$/;
|
|
324
|
+
const ZERO_ESCAPE_REGEXP = /\0(.)/g;
|
|
332
325
|
|
|
333
326
|
/** @typedef {{ resource: string, path: string, query: string, fragment: string }} ParsedResource */
|
|
334
327
|
/** @typedef {{ resource: string, path: string, query: string }} ParsedResourceWithoutFragment */
|
|
@@ -337,37 +330,97 @@ const PATH_QUERY_REGEXP = /^((?:\0.|[^?\0])*)(\?.*)?$/;
|
|
|
337
330
|
* @param {string} str the path with query and fragment
|
|
338
331
|
* @returns {ParsedResource} parsed parts
|
|
339
332
|
*/
|
|
340
|
-
const _parseResource = str => {
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
333
|
+
const _parseResource = (str) => {
|
|
334
|
+
const firstEscape = str.indexOf("\0");
|
|
335
|
+
|
|
336
|
+
// Handle `\0`
|
|
337
|
+
if (firstEscape !== -1) {
|
|
338
|
+
const match =
|
|
339
|
+
/** @type {[string, string, string | undefined, string | undefined]} */
|
|
340
|
+
(/** @type {unknown} */ (PATH_QUERY_FRAGMENT_REGEXP.exec(str)));
|
|
341
|
+
|
|
342
|
+
return {
|
|
343
|
+
resource: str,
|
|
344
|
+
path: match[1].replace(ZERO_ESCAPE_REGEXP, "$1"),
|
|
345
|
+
query: match[2] ? match[2].replace(ZERO_ESCAPE_REGEXP, "$1") : "",
|
|
346
|
+
fragment: match[3] || ""
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/** @type {ParsedResource} */
|
|
351
|
+
const result = { resource: str, path: "", query: "", fragment: "" };
|
|
352
|
+
const queryStart = str.indexOf("?");
|
|
353
|
+
const fragmentStart = str.indexOf("#");
|
|
354
|
+
|
|
355
|
+
if (fragmentStart < 0) {
|
|
356
|
+
if (queryStart < 0) {
|
|
357
|
+
result.path = result.resource;
|
|
358
|
+
|
|
359
|
+
// No fragment, no query
|
|
360
|
+
return result;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
result.path = str.slice(0, queryStart);
|
|
364
|
+
result.query = str.slice(queryStart);
|
|
365
|
+
|
|
366
|
+
// Query, no fragment
|
|
367
|
+
return result;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (queryStart < 0 || fragmentStart < queryStart) {
|
|
371
|
+
result.path = str.slice(0, fragmentStart);
|
|
372
|
+
result.fragment = str.slice(fragmentStart);
|
|
373
|
+
|
|
374
|
+
// Fragment, no query
|
|
375
|
+
return result;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
result.path = str.slice(0, queryStart);
|
|
379
|
+
result.query = str.slice(queryStart, fragmentStart);
|
|
380
|
+
result.fragment = str.slice(fragmentStart);
|
|
381
|
+
|
|
382
|
+
// Query and fragment
|
|
383
|
+
return result;
|
|
350
384
|
};
|
|
351
|
-
module.exports.parseResource = makeCacheable(_parseResource);
|
|
352
385
|
|
|
353
386
|
/**
|
|
354
387
|
* Parse resource, skips fragment part
|
|
355
388
|
* @param {string} str the path with query and fragment
|
|
356
389
|
* @returns {ParsedResourceWithoutFragment} parsed parts
|
|
357
390
|
*/
|
|
358
|
-
const _parseResourceWithoutFragment = str => {
|
|
359
|
-
const
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
391
|
+
const _parseResourceWithoutFragment = (str) => {
|
|
392
|
+
const firstEscape = str.indexOf("\0");
|
|
393
|
+
|
|
394
|
+
// Handle `\0`
|
|
395
|
+
if (firstEscape !== -1) {
|
|
396
|
+
const match =
|
|
397
|
+
/** @type {[string, string, string | undefined]} */
|
|
398
|
+
(/** @type {unknown} */ (PATH_QUERY_REGEXP.exec(str)));
|
|
399
|
+
|
|
400
|
+
return {
|
|
401
|
+
resource: str,
|
|
402
|
+
path: match[1].replace(ZERO_ESCAPE_REGEXP, "$1"),
|
|
403
|
+
query: match[2] ? match[2].replace(ZERO_ESCAPE_REGEXP, "$1") : ""
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/** @type {ParsedResourceWithoutFragment} */
|
|
408
|
+
const result = { resource: str, path: "", query: "" };
|
|
409
|
+
const queryStart = str.indexOf("?");
|
|
410
|
+
|
|
411
|
+
if (queryStart < 0) {
|
|
412
|
+
result.path = result.resource;
|
|
413
|
+
|
|
414
|
+
// No query
|
|
415
|
+
return result;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
result.path = str.slice(0, queryStart);
|
|
419
|
+
result.query = str.slice(queryStart);
|
|
420
|
+
|
|
421
|
+
// Query
|
|
422
|
+
return result;
|
|
367
423
|
};
|
|
368
|
-
module.exports.parseResourceWithoutFragment = makeCacheable(
|
|
369
|
-
_parseResourceWithoutFragment
|
|
370
|
-
);
|
|
371
424
|
|
|
372
425
|
/**
|
|
373
426
|
* @param {string} filename the filename which should be undone
|
|
@@ -375,7 +428,7 @@ module.exports.parseResourceWithoutFragment = makeCacheable(
|
|
|
375
428
|
* @param {boolean} enforceRelative true returns ./ for empty paths
|
|
376
429
|
* @returns {string} repeated ../ to leave the directory of the provided filename to be back on output dir
|
|
377
430
|
*/
|
|
378
|
-
|
|
431
|
+
const getUndoPath = (filename, outputPath, enforceRelative) => {
|
|
379
432
|
let depth = -1;
|
|
380
433
|
let append = "";
|
|
381
434
|
outputPath = outputPath.replace(/[\\/]$/, "");
|
|
@@ -401,3 +454,13 @@ module.exports.getUndoPath = (filename, outputPath, enforceRelative) => {
|
|
|
401
454
|
? `./${append}`
|
|
402
455
|
: append;
|
|
403
456
|
};
|
|
457
|
+
|
|
458
|
+
module.exports.absolutify = absolutify;
|
|
459
|
+
module.exports.contextify = contextify;
|
|
460
|
+
module.exports.getUndoPath = getUndoPath;
|
|
461
|
+
module.exports.makePathsAbsolute = makeCacheableWithContext(_makePathsAbsolute);
|
|
462
|
+
module.exports.makePathsRelative = makeCacheableWithContext(_makePathsRelative);
|
|
463
|
+
module.exports.parseResource = makeCacheable(_parseResource);
|
|
464
|
+
module.exports.parseResourceWithoutFragment = makeCacheable(
|
|
465
|
+
_parseResourceWithoutFragment
|
|
466
|
+
);
|
|
@@ -73,16 +73,12 @@ module.exports = {
|
|
|
73
73
|
require("../dependencies/CriticalDependencyWarning"),
|
|
74
74
|
"dependencies/CssImportDependency": () =>
|
|
75
75
|
require("../dependencies/CssImportDependency"),
|
|
76
|
-
"dependencies/
|
|
77
|
-
require("../dependencies/
|
|
78
|
-
"dependencies/CssSelfLocalIdentifierDependency": () =>
|
|
79
|
-
require("../dependencies/CssSelfLocalIdentifierDependency"),
|
|
76
|
+
"dependencies/CssUrlDependency": () =>
|
|
77
|
+
require("../dependencies/CssUrlDependency"),
|
|
80
78
|
"dependencies/CssIcssImportDependency": () =>
|
|
81
79
|
require("../dependencies/CssIcssImportDependency"),
|
|
82
80
|
"dependencies/CssIcssExportDependency": () =>
|
|
83
81
|
require("../dependencies/CssIcssExportDependency"),
|
|
84
|
-
"dependencies/CssUrlDependency": () =>
|
|
85
|
-
require("../dependencies/CssUrlDependency"),
|
|
86
82
|
"dependencies/CssIcssSymbolDependency": () =>
|
|
87
83
|
require("../dependencies/CssIcssSymbolDependency"),
|
|
88
84
|
"dependencies/DelegatedSourceDependency": () =>
|
|
@@ -170,6 +166,8 @@ module.exports = {
|
|
|
170
166
|
"dependencies/UnsupportedDependency": () =>
|
|
171
167
|
require("../dependencies/UnsupportedDependency"),
|
|
172
168
|
"dependencies/URLDependency": () => require("../dependencies/URLDependency"),
|
|
169
|
+
"dependencies/URLContextDependency": () =>
|
|
170
|
+
require("../dependencies/URLContextDependency"),
|
|
173
171
|
"dependencies/WebAssemblyExportImportedDependency": () =>
|
|
174
172
|
require("../dependencies/WebAssemblyExportImportedDependency"),
|
|
175
173
|
"dependencies/WebAssemblyImportDependency": () =>
|
package/lib/util/magicComment.js
CHANGED
|
@@ -5,7 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
const memoize = require("./memoize");
|
|
9
|
+
|
|
10
|
+
const getVm = memoize(() => require("vm"));
|
|
11
|
+
|
|
8
12
|
// regexp to match at least one "magic comment"
|
|
13
|
+
module.exports.createMagicCommentContext = () =>
|
|
14
|
+
getVm().createContext(undefined, {
|
|
15
|
+
name: "Webpack Magic Comment Parser",
|
|
16
|
+
codeGeneration: { strings: false, wasm: false }
|
|
17
|
+
});
|
|
9
18
|
module.exports.webpackCommentRegExp = new RegExp(
|
|
10
19
|
/(^|\W)webpack[A-Z]{1,}[A-Za-z]{1,}:/
|
|
11
20
|
);
|
|
@@ -14,8 +23,3 @@ module.exports.webpackCommentRegExp = new RegExp(
|
|
|
14
23
|
/**
|
|
15
24
|
* @returns {import("vm").Context} magic comment context
|
|
16
25
|
*/
|
|
17
|
-
module.exports.createMagicCommentContext = () =>
|
|
18
|
-
require("vm").createContext(undefined, {
|
|
19
|
-
name: "Webpack Magic Comment Parser",
|
|
20
|
-
codeGeneration: { strings: false, wasm: false }
|
|
21
|
-
});
|
|
@@ -13,7 +13,7 @@ const { register } = require("./serialization");
|
|
|
13
13
|
/** @typedef {{ serialize: (context: ObjectSerializerContext) => void, deserialize: (context: ObjectDeserializerContext) => void }} SerializableClass */
|
|
14
14
|
/**
|
|
15
15
|
* @template {SerializableClass} T
|
|
16
|
-
* @typedef {(new (...params:
|
|
16
|
+
* @typedef {(new (...params: EXPECTED_ANY[]) => T) & { deserialize?: (context: ObjectDeserializerContext) => T }} SerializableClassConstructor
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -53,7 +53,7 @@ class ClassSerializer {
|
|
|
53
53
|
* @template {Constructor} T
|
|
54
54
|
* @param {T} Constructor the constructor
|
|
55
55
|
* @param {string} request the request which will be required when deserializing
|
|
56
|
-
* @param {string | null}
|
|
56
|
+
* @param {string | null=} name the name to make multiple serializer unique when sharing a request
|
|
57
57
|
*/
|
|
58
58
|
module.exports = (Constructor, request, name = null) => {
|
|
59
59
|
register(Constructor, request, name, new ClassSerializer(Constructor));
|
package/lib/util/memoize.js
CHANGED
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
"use strict";
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* @template T
|
|
9
|
+
* @typedef {() => T} FunctionReturning
|
|
10
|
+
*/
|
|
8
11
|
|
|
9
12
|
/**
|
|
10
13
|
* @template T
|
|
11
14
|
* @param {FunctionReturning<T>} fn memorized function
|
|
12
15
|
* @returns {FunctionReturning<T>} new function
|
|
13
16
|
*/
|
|
14
|
-
const memoize = fn => {
|
|
17
|
+
const memoize = (fn) => {
|
|
15
18
|
let cache = false;
|
|
16
19
|
/** @type {T | undefined} */
|
|
17
20
|
let result;
|
package/lib/util/objectToMap.js
CHANGED
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Convert an object into an ES6 map
|
|
9
|
-
* @
|
|
10
|
-
* @
|
|
9
|
+
* @template {object} T
|
|
10
|
+
* @param {T} obj any object type that works with Object.entries()
|
|
11
|
+
* @returns {Map<string, T[keyof T]>} an ES6 Map of KV pairs
|
|
11
12
|
*/
|
|
12
13
|
module.exports = function objectToMap(obj) {
|
|
13
14
|
return new Map(Object.entries(obj));
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
* @template {Error} E
|
|
11
11
|
* @param {Iterable<T>} items initial items
|
|
12
12
|
* @param {number} concurrency number of items running in parallel
|
|
13
|
-
* @param {
|
|
14
|
-
* @param {
|
|
13
|
+
* @param {(item: T, push: (item: T) => void, callback: (err?: E) => void) => void} processor worker which pushes more items
|
|
14
|
+
* @param {(err?: E) => void} callback all items processed
|
|
15
15
|
* @returns {void}
|
|
16
16
|
*/
|
|
17
17
|
const processAsyncTree = (items, concurrency, processor, callback) => {
|
|
18
|
-
const queue =
|
|
18
|
+
const queue = [...items];
|
|
19
19
|
if (queue.length === 0) return callback();
|
|
20
20
|
let processing = 0;
|
|
21
21
|
let finished = false;
|
|
@@ -24,7 +24,7 @@ const processAsyncTree = (items, concurrency, processor, callback) => {
|
|
|
24
24
|
/**
|
|
25
25
|
* @param {T} item item
|
|
26
26
|
*/
|
|
27
|
-
const push = item => {
|
|
27
|
+
const push = (item) => {
|
|
28
28
|
queue.push(item);
|
|
29
29
|
if (!processScheduled && processing < concurrency) {
|
|
30
30
|
processScheduled = true;
|
|
@@ -35,7 +35,7 @@ const processAsyncTree = (items, concurrency, processor, callback) => {
|
|
|
35
35
|
/**
|
|
36
36
|
* @param {E | null | undefined} err error
|
|
37
37
|
*/
|
|
38
|
-
const processorCallback = err => {
|
|
38
|
+
const processorCallback = (err) => {
|
|
39
39
|
processing--;
|
|
40
40
|
if (err && !finished) {
|
|
41
41
|
finished = true;
|
package/lib/util/propertyName.js
CHANGED
|
@@ -50,7 +50,6 @@ const RESERVED_IDENTIFIER = new Set([
|
|
|
50
50
|
"public",
|
|
51
51
|
"static",
|
|
52
52
|
"yield",
|
|
53
|
-
"yield",
|
|
54
53
|
// module code
|
|
55
54
|
"await",
|
|
56
55
|
// skip future reserved keywords defined under ES1 till ES3
|
|
@@ -67,11 +66,11 @@ const RESERVED_IDENTIFIER = new Set([
|
|
|
67
66
|
* @param {string} prop property name to analyze
|
|
68
67
|
* @returns {string} valid JS property name
|
|
69
68
|
*/
|
|
70
|
-
const propertyName = prop => {
|
|
69
|
+
const propertyName = (prop) => {
|
|
71
70
|
if (SAFE_IDENTIFIER.test(prop) && !RESERVED_IDENTIFIER.has(prop)) {
|
|
72
71
|
return prop;
|
|
73
72
|
}
|
|
74
73
|
return JSON.stringify(prop);
|
|
75
74
|
};
|
|
76
75
|
|
|
77
|
-
module.exports = {
|
|
76
|
+
module.exports = { RESERVED_IDENTIFIER, SAFE_IDENTIFIER, propertyName };
|
|
@@ -5,9 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
const Position = /** @type {TODO} */ (require("acorn")).Position;
|
|
8
|
+
const Position = require("acorn").Position;
|
|
11
9
|
const SourceLocation = require("acorn").SourceLocation;
|
|
12
10
|
const ValidationError = require("schema-utils").ValidationError;
|
|
13
11
|
const {
|
|
@@ -19,14 +17,13 @@ const {
|
|
|
19
17
|
ReplaceSource,
|
|
20
18
|
SourceMapSource
|
|
21
19
|
} = require("webpack-sources");
|
|
20
|
+
const { register } = require("./serialization");
|
|
22
21
|
|
|
23
22
|
/** @typedef {import("acorn").Position} Position */
|
|
24
23
|
/** @typedef {import("../Dependency").RealDependencyLocation} RealDependencyLocation */
|
|
25
24
|
/** @typedef {import("../Dependency").SourcePosition} SourcePosition */
|
|
26
|
-
/** @typedef {import("
|
|
27
|
-
/** @typedef {import("
|
|
28
|
-
|
|
29
|
-
/** @typedef {ObjectSerializerContext & { writeLazy?: (value: any) => void }} WebpackObjectSerializerContext */
|
|
25
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
26
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
30
27
|
|
|
31
28
|
const CURRENT_MODULE = "webpack/lib/util/registerExternalSerializer";
|
|
32
29
|
|
|
@@ -37,7 +34,7 @@ register(
|
|
|
37
34
|
new (class CachedSourceSerializer {
|
|
38
35
|
/**
|
|
39
36
|
* @param {CachedSource} source the cached source to be serialized
|
|
40
|
-
* @param {
|
|
37
|
+
* @param {ObjectSerializerContext} context context
|
|
41
38
|
* @returns {void}
|
|
42
39
|
*/
|
|
43
40
|
serialize(source, { write, writeLazy }) {
|
|
@@ -68,7 +65,7 @@ register(
|
|
|
68
65
|
new (class RawSourceSerializer {
|
|
69
66
|
/**
|
|
70
67
|
* @param {RawSource} source the raw source to be serialized
|
|
71
|
-
* @param {
|
|
68
|
+
* @param {ObjectSerializerContext} context context
|
|
72
69
|
* @returns {void}
|
|
73
70
|
*/
|
|
74
71
|
serialize(source, { write }) {
|
|
@@ -95,7 +92,7 @@ register(
|
|
|
95
92
|
new (class ConcatSourceSerializer {
|
|
96
93
|
/**
|
|
97
94
|
* @param {ConcatSource} source the concat source to be serialized
|
|
98
|
-
* @param {
|
|
95
|
+
* @param {ObjectSerializerContext} context context
|
|
99
96
|
* @returns {void}
|
|
100
97
|
*/
|
|
101
98
|
serialize(source, { write }) {
|
|
@@ -121,7 +118,7 @@ register(
|
|
|
121
118
|
new (class PrefixSourceSerializer {
|
|
122
119
|
/**
|
|
123
120
|
* @param {PrefixSource} source the prefix source to be serialized
|
|
124
|
-
* @param {
|
|
121
|
+
* @param {ObjectSerializerContext} context context
|
|
125
122
|
* @returns {void}
|
|
126
123
|
*/
|
|
127
124
|
serialize(source, { write }) {
|
|
@@ -146,7 +143,7 @@ register(
|
|
|
146
143
|
new (class ReplaceSourceSerializer {
|
|
147
144
|
/**
|
|
148
145
|
* @param {ReplaceSource} source the replace source to be serialized
|
|
149
|
-
* @param {
|
|
146
|
+
* @param {ObjectSerializerContext} context context
|
|
150
147
|
* @returns {void}
|
|
151
148
|
*/
|
|
152
149
|
serialize(source, { write }) {
|
|
@@ -196,7 +193,7 @@ register(
|
|
|
196
193
|
new (class OriginalSourceSerializer {
|
|
197
194
|
/**
|
|
198
195
|
* @param {OriginalSource} source the original source to be serialized
|
|
199
|
-
* @param {
|
|
196
|
+
* @param {ObjectSerializerContext} context context
|
|
200
197
|
* @returns {void}
|
|
201
198
|
*/
|
|
202
199
|
serialize(source, { write }) {
|
|
@@ -223,7 +220,7 @@ register(
|
|
|
223
220
|
new (class SourceLocationSerializer {
|
|
224
221
|
/**
|
|
225
222
|
* @param {SourceLocation} loc the location to be serialized
|
|
226
|
-
* @param {
|
|
223
|
+
* @param {ObjectSerializerContext} context context
|
|
227
224
|
* @returns {void}
|
|
228
225
|
*/
|
|
229
226
|
serialize(loc, { write }) {
|
|
@@ -259,7 +256,7 @@ register(
|
|
|
259
256
|
new (class PositionSerializer {
|
|
260
257
|
/**
|
|
261
258
|
* @param {Position} pos the position to be serialized
|
|
262
|
-
* @param {
|
|
259
|
+
* @param {ObjectSerializerContext} context context
|
|
263
260
|
* @returns {void}
|
|
264
261
|
*/
|
|
265
262
|
serialize(pos, { write }) {
|
|
@@ -287,7 +284,7 @@ register(
|
|
|
287
284
|
new (class SourceMapSourceSerializer {
|
|
288
285
|
/**
|
|
289
286
|
* @param {SourceMapSource} source the source map source to be serialized
|
|
290
|
-
* @param {
|
|
287
|
+
* @param {ObjectSerializerContext} context context
|
|
291
288
|
* @returns {void}
|
|
292
289
|
*/
|
|
293
290
|
serialize(source, { write }) {
|
|
@@ -310,10 +307,9 @@ register(
|
|
|
310
307
|
CURRENT_MODULE,
|
|
311
308
|
"schema-utils/ValidationError",
|
|
312
309
|
new (class ValidationErrorSerializer {
|
|
313
|
-
// TODO error should be ValidationError, but this fails the type checks
|
|
314
310
|
/**
|
|
315
|
-
* @param {
|
|
316
|
-
* @param {
|
|
311
|
+
* @param {ValidationError} error the source map source to be serialized
|
|
312
|
+
* @param {ObjectSerializerContext} context context
|
|
317
313
|
* @returns {void}
|
|
318
314
|
*/
|
|
319
315
|
serialize(error, { write }) {
|
|
@@ -328,7 +324,7 @@ register(
|
|
|
328
324
|
|
|
329
325
|
/**
|
|
330
326
|
* @param {ObjectDeserializerContext} context context
|
|
331
|
-
* @returns {
|
|
327
|
+
* @returns {ValidationError} error
|
|
332
328
|
*/
|
|
333
329
|
deserialize({ read }) {
|
|
334
330
|
return new ValidationError(read(), read(), read());
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
/**
|
|
9
|
+
* @param {string | Buffer} strOrBuffer string or buffer
|
|
10
|
+
* @returns {string | Buffer} result without BOM
|
|
11
|
+
*/
|
|
12
|
+
module.exports = (strOrBuffer) => {
|
|
13
|
+
if (typeof strOrBuffer === "string" && strOrBuffer.charCodeAt(0) === 0xfeff) {
|
|
14
|
+
return strOrBuffer.slice(1);
|
|
15
|
+
} else if (
|
|
16
|
+
Buffer.isBuffer(strOrBuffer) &&
|
|
17
|
+
strOrBuffer[0] === 0xef &&
|
|
18
|
+
strOrBuffer[1] === 0xbb &&
|
|
19
|
+
strOrBuffer[2] === 0xbf
|
|
20
|
+
) {
|
|
21
|
+
return strOrBuffer.subarray(3);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return strOrBuffer;
|
|
25
|
+
};
|