@depup/webpack 5.110.1-depup.0 → 5.111.1-depup.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -8
- package/changes.json +7 -11
- package/lib/APIPlugin.js +26 -11
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/Cache.js +8 -3
- package/lib/CacheFacade.js +1 -1
- package/lib/ChunkGraph.js +20 -18
- package/lib/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/CompatibilityPlugin.js +3 -4
- package/lib/Compilation.js +337 -338
- package/lib/Compiler.js +213 -51
- package/lib/ConcatenationScope.js +25 -35
- package/lib/ConstPlugin.js +16 -132
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/DependencyTemplate.js +2 -1
- package/lib/DotenvPlugin.js +64 -40
- package/lib/ErrorHelpers.js +113 -0
- package/lib/ExportsInfo.js +30 -16
- package/lib/ExternalModule.js +47 -22
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +53 -34
- package/lib/FlagDependencyUsagePlugin.js +17 -15
- package/lib/Generator.js +24 -2
- package/lib/HotModuleReplacementPlugin.js +55 -7
- package/lib/IgnorePlugin.js +1 -1
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/LoaderOptionsPlugin.js +1 -1
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +19 -10
- package/lib/ModuleGraph.js +6 -9
- package/lib/MultiCompiler.js +7 -17
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +148 -70
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +33 -3
- package/lib/RuntimeTemplate.js +1147 -847
- package/lib/SourceMapDevToolPlugin.js +54 -104
- package/lib/TemplatedPathPlugin.js +16 -59
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetBytesGenerator.js +7 -1
- package/lib/asset/AssetGenerator.js +50 -24
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/AssetSourceGenerator.js +7 -1
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/async-modules/AsyncModuleHelpers.js +10 -4
- package/lib/buildChunkGraph.js +11 -15
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +7 -8
- package/lib/cache/PackFileCacheStrategy.js +17 -19
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/config/browserslistTargetHandler.js +17 -4
- package/lib/config/defaults.js +162 -142
- package/lib/config/getClaimedAssetTypes.js +10 -11
- package/lib/config/normalization.js +100 -20
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +54 -115
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +19 -21
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +27 -11
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +92 -15
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +3 -10
- package/lib/css/CssParser.js +162 -31
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +43 -32
- package/lib/css/data.js +3526 -871
- package/lib/css/syntax.js +6455 -1237
- package/lib/debug/ProfilingPlugin.js +7 -4
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +13 -12
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +5 -5
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +32 -9
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
- package/lib/dependencies/ContextElementDependency.js +1 -1
- package/lib/dependencies/CssIcssExportDependency.js +13 -9
- package/lib/dependencies/CssIcssImportDependency.js +3 -6
- package/lib/dependencies/CssUrlDependency.js +3 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +67 -22
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -4
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +10 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +12 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +217 -34
- package/lib/dependencies/HarmonyExportInitFragment.js +110 -23
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +25 -58
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +99 -41
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +198 -25
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +117 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +136 -104
- package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
- package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
- package/lib/dependencies/ImportContextDependency.js +43 -3
- package/lib/dependencies/ImportDependency.js +8 -29
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/ImportMetaGlobHelpers.js +1 -1
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +67 -25
- package/lib/dependencies/ImportParserPlugin.js +25 -15
- package/lib/dependencies/LoaderPlugin.js +26 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RequireHeaderDependency.js +20 -21
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/URLContextDependency.js +1 -1
- package/lib/dependencies/URLDependency.js +6 -5
- package/lib/dependencies/WorkerAndWorkletPlugin.js +16 -21
- package/lib/dependencies/WorkerDependency.js +12 -18
- package/lib/dependencies/WorkletDependency.js +12 -20
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dll/DelegatedModule.js +18 -1
- package/lib/dll/DllReferencePlugin.js +11 -8
- package/lib/dll/LibManifestPlugin.js +1 -1
- package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -0
- package/lib/errors/HookWebpackError.js +3 -2
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/MissingSourceMapsWarning.js +36 -0
- package/lib/errors/ModuleParseError.js +2 -1
- package/lib/errors/UnusedAssetsWarning.js +36 -0
- package/lib/errors/UnusedFederationWarning.js +35 -0
- package/lib/errors/UnusedModulesWarning.js +38 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +21 -5
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +91 -53
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/hmr/LazyCompilationPlugin.js +3 -5
- package/lib/html/HtmlGenerator.js +72 -87
- package/lib/html/HtmlModulesPlugin.js +479 -215
- package/lib/html/HtmlParser.js +110 -147
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +142 -7
- package/lib/html/htmlMinify.js +92 -122
- package/lib/html/syntax.js +2031 -1556
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +49 -3
- package/lib/javascript/ChunkFormatHelpers.js +4 -3
- package/lib/javascript/JavascriptGenerator.js +8 -1
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +76 -80
- package/lib/javascript/JavascriptParser.js +1970 -900
- package/lib/javascript/StartupHelpers.js +27 -3
- package/lib/javascript/data.js +172 -0
- package/lib/javascript/grammar.js +5546 -0
- package/lib/javascript/parser.js +1500 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +9061 -5262
- package/lib/json/JsonGenerator.js +7 -1
- package/lib/library/ModuleLibraryPlugin.js +171 -132
- package/lib/loaders/LoaderRunner.js +170 -14
- package/lib/node/NodeWatchFileSystem.js +3 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -15
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -5
- package/lib/optimize/ConcatenatedModule.js +222 -125
- package/lib/optimize/ConstExportsPlugin.js +50 -34
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
- package/lib/optimize/InlineExports.js +20 -2
- package/lib/optimize/InnerGraphPlugin.js +7 -13
- package/lib/optimize/LimitChunkCountPlugin.js +5 -8
- package/lib/optimize/MangleExportsPlugin.js +13 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +27 -5
- package/lib/optimize/RealContentHashPlugin.js +179 -44
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -28
- package/lib/optimize/SplitChunksPlugin.js +2 -4
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/BroadContextsPlugin.js +1 -1
- package/lib/performance/CacheEffectivenessPlugin.js +7 -7
- package/lib/performance/DuplicateModulesPlugin.js +57 -13
- package/lib/performance/EvalUsagePlugin.js +5 -2
- package/lib/performance/MissingSourceMapsPlugin.js +115 -0
- package/lib/performance/PureAnnotationsPlugin.js +6 -3
- package/lib/performance/SizeLimitsPlugin.js +2 -4
- package/lib/performance/TopLevelThisPlugin.js +5 -4
- package/lib/performance/UnusedAssetsPlugin.js +109 -0
- package/lib/performance/UnusedFederationPlugin.js +147 -0
- package/lib/performance/UnusedModulesPlugin.js +141 -0
- package/lib/performance/UnusedReexportsPlugin.js +1 -55
- package/lib/performance/isOnlyReexported.js +65 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +8 -8
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ResourceHintPlugin.js +29 -35
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +16 -10
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +103 -67
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
- package/lib/runtime/BaseUriRuntimeModule.js +9 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +12 -4
- package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
- package/lib/runtime/GlobalRuntimeModule.js +11 -4
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +313 -222
- package/lib/runtime/NonceRuntimeModule.js +9 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
- package/lib/runtime/PublicPathRuntimeModule.js +9 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
- package/lib/runtime/SystemContextRuntimeModule.js +9 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
- package/lib/schemes/DataUriPlugin.js +3 -6
- package/lib/schemes/HttpUriPlugin.js +22 -5
- package/lib/schemes/VirtualUrlPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +31 -18
- package/lib/serialization/ObjectMiddleware.js +168 -139
- package/lib/sharing/ConsumeSharedPlugin.js +12 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
- package/lib/sharing/ShareRuntimeModule.js +9 -0
- package/lib/sharing/declaredShared.js +47 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +6 -5
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/typescript/TypeScriptPlugin.js +10 -13
- package/lib/url/URLParserPlugin.js +6 -8
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/SourceProcessor.js +115 -99
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/chainedImports.js +3 -4
- package/lib/util/concatenate.js +4 -4
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +2 -3
- package/lib/util/deterministicGrouping.js +8 -13
- package/lib/util/findGraphRoots.js +6 -13
- package/lib/util/fs.js +27 -1
- package/lib/util/globUtils.js +1 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +7 -1
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/semver.js +5 -3
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +7 -12
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +12 -4
- package/lib/wasm-sync/WebAssemblyGenerator.js +6 -1
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -6
- package/lib/web/FetchCompileWasmPlugin.js +4 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +55 -46
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +388 -76
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/ManifestPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/types.d.ts +1795 -608
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -259,7 +259,13 @@ class JsonGenerator extends Generator {
|
|
|
259
259
|
* @returns {Source | null} generated code
|
|
260
260
|
*/
|
|
261
261
|
generateError(error, module, generateContext) {
|
|
262
|
-
return new RawSource(
|
|
262
|
+
return new RawSource(
|
|
263
|
+
Generator.throwBuildErrorCode(
|
|
264
|
+
error,
|
|
265
|
+
undefined,
|
|
266
|
+
generateContext.runtimeTemplate.requestShortener
|
|
267
|
+
)
|
|
268
|
+
);
|
|
263
269
|
}
|
|
264
270
|
|
|
265
271
|
/**
|
|
@@ -14,15 +14,17 @@ const Template = require("../Template");
|
|
|
14
14
|
const HarmonyExportExpressionDependency = require("../dependencies/HarmonyExportExpressionDependency");
|
|
15
15
|
const HarmonyExportImportedSpecifierDependency = require("../dependencies/HarmonyExportImportedSpecifierDependency");
|
|
16
16
|
const HarmonyExportSpecifierDependency = require("../dependencies/HarmonyExportSpecifierDependency");
|
|
17
|
+
const ExternalStarReexportError = require("../errors/ExternalStarReexportError");
|
|
17
18
|
const JavascriptModulesPlugin = require("../javascript/JavascriptModulesPlugin");
|
|
18
19
|
const ConcatenatedModule = require("../optimize/ConcatenatedModule");
|
|
19
20
|
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
21
|
+
const { toJsStringLiteral } = require("../util/identifier");
|
|
20
22
|
const {
|
|
21
23
|
RESERVED_IDENTIFIER,
|
|
22
24
|
SAFE_IDENTIFIER,
|
|
23
25
|
propertyAccess
|
|
24
26
|
} = require("../util/property");
|
|
25
|
-
const { getEntryRuntime
|
|
27
|
+
const { getEntryRuntime } = require("../util/runtime");
|
|
26
28
|
const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
27
29
|
|
|
28
30
|
/** @import { Source } from "webpack-sources" */
|
|
@@ -37,13 +39,14 @@ const AbstractLibraryPlugin = require("./AbstractLibraryPlugin");
|
|
|
37
39
|
/** @import Compilation from "../Compilation" */
|
|
38
40
|
/** @import Compiler from "../Compiler" */
|
|
39
41
|
/** @import ModuleGraph from "../ModuleGraph" */
|
|
40
|
-
/** @import Module
|
|
42
|
+
/** @import Module from "../Module" */
|
|
41
43
|
/**
|
|
42
44
|
* @import {
|
|
43
45
|
* StartupRenderContext,
|
|
44
46
|
* ModuleRenderContext
|
|
45
47
|
* } from "../javascript/JavascriptModulesPlugin"
|
|
46
48
|
*/
|
|
49
|
+
/** @import { ImportAttributes } from "../javascript/JavascriptParser" */
|
|
47
50
|
/** @import { RuntimeSpec } from "../util/runtime" */
|
|
48
51
|
/**
|
|
49
52
|
* @import {
|
|
@@ -122,6 +125,18 @@ const definesOnlyNativeExports = (module, moduleGraph) => {
|
|
|
122
125
|
const toExportName = (name) =>
|
|
123
126
|
SAFE_IDENTIFIER.test(name) ? name : JSON.stringify(name);
|
|
124
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Renders the import attributes of a reexport in the syntax the author wrote,
|
|
130
|
+
* since a legacy `assert` clause and a `with` clause are not interchangeable.
|
|
131
|
+
* @param {ImportAttributes | undefined} attributes the import attributes
|
|
132
|
+
* @returns {string} the attributes clause, empty when there are none
|
|
133
|
+
*/
|
|
134
|
+
const toAttributesClause = (attributes) => {
|
|
135
|
+
if (!attributes) return "";
|
|
136
|
+
const { _isLegacyAssert: isLegacyAssert, ...values } = attributes;
|
|
137
|
+
return ` ${isLegacyAssert ? "assert" : "with"} ${JSON.stringify(values)}`;
|
|
138
|
+
};
|
|
139
|
+
|
|
125
140
|
/**
|
|
126
141
|
* Whether the export name can also be used as the declared binding name.
|
|
127
142
|
* @param {string} name export name
|
|
@@ -156,73 +171,33 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
156
171
|
super.apply(compiler);
|
|
157
172
|
|
|
158
173
|
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
|
|
159
|
-
const { onDemandExportsGeneration } =
|
|
160
|
-
ConcatenatedModule.getCompilationHooks(compilation);
|
|
161
174
|
const javascriptHooks =
|
|
162
175
|
JavascriptModulesPlugin.getCompilationHooks(compilation);
|
|
163
|
-
onDemandExportsGeneration.tap(
|
|
164
|
-
PLUGIN_NAME,
|
|
165
|
-
(module, runtimes, source, finalName) => {
|
|
166
|
-
/** @type {BuildMeta} */
|
|
167
|
-
const buildMeta = module.buildMeta || (module.buildMeta = {});
|
|
168
|
-
|
|
169
|
-
/** @type {BuildMeta["exportsSourceByRuntime"]} */
|
|
170
|
-
const exportsSourceByRuntime =
|
|
171
|
-
buildMeta.exportsSourceByRuntime ||
|
|
172
|
-
(buildMeta.exportsSourceByRuntime = new Map());
|
|
173
|
-
|
|
174
|
-
/** @type {BuildMeta["exportsFinalNameByRuntime"]} */
|
|
175
|
-
const exportsFinalNameByRuntime =
|
|
176
|
-
buildMeta.exportsFinalNameByRuntime ||
|
|
177
|
-
(buildMeta.exportsFinalNameByRuntime = new Map());
|
|
178
|
-
|
|
179
|
-
for (const runtime of runtimes) {
|
|
180
|
-
const key = getRuntimeKey(runtime);
|
|
181
|
-
exportsSourceByRuntime.set(key, source);
|
|
182
|
-
exportsFinalNameByRuntime.set(key, finalName);
|
|
183
|
-
}
|
|
184
176
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
buildMeta.exportsBindingSourceByRuntime ||
|
|
204
|
-
(buildMeta.exportsBindingSourceByRuntime = new Map());
|
|
205
|
-
bindings.set(key, source);
|
|
206
|
-
} else {
|
|
207
|
-
const sources =
|
|
208
|
-
buildMeta.exportsSourceByRuntime ||
|
|
209
|
-
(buildMeta.exportsSourceByRuntime = new Map());
|
|
210
|
-
// The `__esModule` marker and the definitions both land here, so
|
|
211
|
-
// keep whichever arrived first rather than replacing it.
|
|
212
|
-
const before = sources.get(key);
|
|
213
|
-
sources.set(key, before ? `${before}${source}` : source);
|
|
177
|
+
compilation.hooks.beforeCodeGeneration.tap(PLUGIN_NAME, () => {
|
|
178
|
+
const entries = libraryEntryModules.get(compilation);
|
|
179
|
+
if (entries === undefined) return;
|
|
180
|
+
const { moduleGraph } = compilation;
|
|
181
|
+
for (const { dependencies } of compilation.entries.values()) {
|
|
182
|
+
for (const dep of dependencies) {
|
|
183
|
+
const module = dep && moduleGraph.getModule(dep);
|
|
184
|
+
if (!module) continue;
|
|
185
|
+
const root =
|
|
186
|
+
module instanceof ConcatenatedModule ? module.rootModule : module;
|
|
187
|
+
if (!entries.has(root)) continue;
|
|
188
|
+
if (
|
|
189
|
+
root === module &&
|
|
190
|
+
!definesOnlyNativeExports(module, moduleGraph)
|
|
191
|
+
) {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
moduleGraph.getMeta(module).onDemandExports = true;
|
|
214
195
|
}
|
|
215
|
-
return true;
|
|
216
196
|
}
|
|
217
|
-
);
|
|
197
|
+
});
|
|
218
198
|
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
// module is wrapped in an IIFE/factory. When the entry is
|
|
222
|
-
// inlined directly, the stashed source — and the
|
|
223
|
-
// `definePropertyGetters` / `requireScope` runtime helpers it
|
|
224
|
-
// pulled in — never make it into the output. Drop those helpers
|
|
225
|
-
// from the chunk's set so the bundle stays clean.
|
|
199
|
+
// The stashed exports source is re-emitted only where the entry is wrapped;
|
|
200
|
+
// inlined directly, the helpers it pulled in have no reader and can go.
|
|
226
201
|
compilation.hooks.additionalChunkRuntimeRequirements.tap(
|
|
227
202
|
PLUGIN_NAME,
|
|
228
203
|
(chunk, set, { chunkGraph, codeGenerationResults }) => {
|
|
@@ -240,22 +215,16 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
240
215
|
if (javascriptHooks.inlineInRuntimeBailout.isUsed()) return;
|
|
241
216
|
|
|
242
217
|
const [module] = chunkGraph.getChunkEntryModulesIterable(chunk);
|
|
243
|
-
const runtimeKey = getRuntimeKey(chunk.runtime);
|
|
244
|
-
const buildMeta = module.buildMeta;
|
|
245
|
-
const takenOver =
|
|
246
|
-
(buildMeta &&
|
|
247
|
-
buildMeta.exportsSourceByRuntime &&
|
|
248
|
-
buildMeta.exportsSourceByRuntime.has(runtimeKey)) ||
|
|
249
|
-
(buildMeta &&
|
|
250
|
-
buildMeta.exportsBindingSourceByRuntime &&
|
|
251
|
-
buildMeta.exportsBindingSourceByRuntime.has(runtimeKey));
|
|
252
|
-
if (!takenOver) return;
|
|
253
218
|
const codeGenResult = codeGenerationResults.get(
|
|
254
219
|
module,
|
|
255
220
|
chunk.runtime
|
|
256
221
|
);
|
|
257
|
-
const
|
|
258
|
-
|
|
222
|
+
const { data } = codeGenResult;
|
|
223
|
+
const takenOver =
|
|
224
|
+
data !== undefined &&
|
|
225
|
+
(data.has("exportsSource") || data.has("exportsBindingSource"));
|
|
226
|
+
if (!takenOver) return;
|
|
227
|
+
const jsSource = codeGenResult.sources.get("javascript");
|
|
259
228
|
if (
|
|
260
229
|
jsSource &&
|
|
261
230
|
String(jsSource.source()).includes(`${RuntimeGlobals.require}.`)
|
|
@@ -367,6 +336,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
367
336
|
}
|
|
368
337
|
}
|
|
369
338
|
}
|
|
339
|
+
this._checkStarReexportedExternals(module, compilation);
|
|
370
340
|
moduleGraph.addExtraReason(module, "used as library export");
|
|
371
341
|
let entries = libraryEntryModules.get(compilation);
|
|
372
342
|
if (entries === undefined) {
|
|
@@ -376,6 +346,61 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
376
346
|
entries.add(module);
|
|
377
347
|
}
|
|
378
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Reports every external the entry star-reexports whose request names a property
|
|
351
|
+
* path, which `export *` has no way to reference.
|
|
352
|
+
* @param {Module} module the library entry module
|
|
353
|
+
* @param {Compilation} compilation the compilation
|
|
354
|
+
* @returns {void}
|
|
355
|
+
*/
|
|
356
|
+
_checkStarReexportedExternals(module, compilation) {
|
|
357
|
+
const { moduleGraph } = compilation;
|
|
358
|
+
/** @type {Set<Module>} */
|
|
359
|
+
const visitedReexportModules = new Set([module]);
|
|
360
|
+
/** @type {Module[]} */
|
|
361
|
+
const queue = [module];
|
|
362
|
+
/** @type {Set<ExternalModule>} */
|
|
363
|
+
const unsupportedExternals = new Set();
|
|
364
|
+
|
|
365
|
+
for (const current of queue) {
|
|
366
|
+
for (const connection of moduleGraph.getOutgoingConnections(current)) {
|
|
367
|
+
const dep = connection.dependency;
|
|
368
|
+
|
|
369
|
+
// Only handle star-reexport statement
|
|
370
|
+
if (
|
|
371
|
+
!(dep instanceof HarmonyExportImportedSpecifierDependency) ||
|
|
372
|
+
dep.name !== null
|
|
373
|
+
) {
|
|
374
|
+
continue;
|
|
375
|
+
}
|
|
376
|
+
const importedModule = connection.resolvedModule;
|
|
377
|
+
|
|
378
|
+
// Only a module providing unknown exports keeps its reexport rendered
|
|
379
|
+
if (
|
|
380
|
+
moduleGraph.getExportsInfo(importedModule)._otherExportsInfo
|
|
381
|
+
.provided !== null
|
|
382
|
+
) {
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
if (importedModule instanceof ExternalModule) {
|
|
386
|
+
const request = importedModule.getResolvedRequest();
|
|
387
|
+
if (Array.isArray(request) && request.length > 1) {
|
|
388
|
+
unsupportedExternals.add(importedModule);
|
|
389
|
+
}
|
|
390
|
+
} else if (!visitedReexportModules.has(importedModule)) {
|
|
391
|
+
visitedReexportModules.add(importedModule);
|
|
392
|
+
queue.push(importedModule);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
for (const externalModule of unsupportedExternals) {
|
|
398
|
+
compilation.errors.push(
|
|
399
|
+
new ExternalStarReexportError(externalModule, module)
|
|
400
|
+
);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
379
404
|
/**
|
|
380
405
|
* Returns preprocess as needed by overriding.
|
|
381
406
|
* @param {LibraryOptions} library normalized library option
|
|
@@ -415,14 +440,17 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
415
440
|
) {
|
|
416
441
|
const result = new ConcatSource(source);
|
|
417
442
|
/** @type {Set<string>} */
|
|
418
|
-
const
|
|
443
|
+
const externalReexports = new Set();
|
|
419
444
|
/** @type {Map<string, string | InlinedUsedName>} */
|
|
420
445
|
const unknownProvidedExports = new Map();
|
|
446
|
+
/** @type {Set<Module>} */
|
|
447
|
+
const visitedReexportModules = new Set();
|
|
421
448
|
|
|
422
449
|
/**
|
|
423
450
|
* Resolves dynamic star reexport.
|
|
424
451
|
* @param {Module} module the module
|
|
425
452
|
* @param {boolean} isDynamicReexport if module is dynamic reexported
|
|
453
|
+
* @returns {void}
|
|
426
454
|
*/
|
|
427
455
|
const resolveDynamicStarReexport = (module, isDynamicReexport) => {
|
|
428
456
|
for (const connection of moduleGraph.getOutgoingConnections(module)) {
|
|
@@ -445,8 +473,22 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
445
473
|
) {
|
|
446
474
|
// Handle export * from 'external'
|
|
447
475
|
if (importedModule instanceof ExternalModule) {
|
|
448
|
-
|
|
449
|
-
|
|
476
|
+
const request = importedModule.getResolvedRequest();
|
|
477
|
+
// A property path is reported by `_checkStarReexportedExternals`,
|
|
478
|
+
// and an absent one by the external's own build
|
|
479
|
+
const specifier =
|
|
480
|
+
typeof request === "string"
|
|
481
|
+
? request
|
|
482
|
+
: Array.isArray(request) && request.length === 1
|
|
483
|
+
? request[0]
|
|
484
|
+
: undefined;
|
|
485
|
+
if (specifier !== undefined) {
|
|
486
|
+
externalReexports.add(
|
|
487
|
+
`export * from ${toJsStringLiteral(specifier)}${toAttributesClause(dep.attributes)};\n`
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
} else if (!visitedReexportModules.has(importedModule)) {
|
|
491
|
+
visitedReexportModules.add(importedModule);
|
|
450
492
|
resolveDynamicStarReexport(importedModule, true);
|
|
451
493
|
}
|
|
452
494
|
}
|
|
@@ -473,8 +515,8 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
473
515
|
|
|
474
516
|
resolveDynamicStarReexport(module, false);
|
|
475
517
|
|
|
476
|
-
for (const
|
|
477
|
-
result.add(
|
|
518
|
+
for (const reexport of externalReexports) {
|
|
519
|
+
result.add(reexport);
|
|
478
520
|
}
|
|
479
521
|
|
|
480
522
|
for (const [origin, used] of unknownProvidedExports) {
|
|
@@ -520,19 +562,13 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
520
562
|
]
|
|
521
563
|
: moduleGraph.getExportsInfo(module).orderedExports;
|
|
522
564
|
|
|
523
|
-
const
|
|
524
|
-
(module.buildMeta &&
|
|
525
|
-
module.buildMeta.exportsFinalNameByRuntime &&
|
|
526
|
-
module.buildMeta.exportsFinalNameByRuntime.get(
|
|
527
|
-
getRuntimeKey(chunk.runtime)
|
|
528
|
-
)) ||
|
|
529
|
-
{};
|
|
565
|
+
const { data } = codeGenerationResults.get(module, chunk.runtime);
|
|
530
566
|
|
|
531
567
|
const isInlinedEntryWithoutIIFE = inlined && !inlinedInIIFE;
|
|
532
568
|
// Direct export bindings from on-demand concatenation
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
569
|
+
/** @type {Record<string, string>} */
|
|
570
|
+
const definitions =
|
|
571
|
+
(isInlinedEntryWithoutIIFE && data && data.get("exportsFinalName")) || {};
|
|
536
572
|
|
|
537
573
|
/** @type {string[]} */
|
|
538
574
|
const shortHandedExports = [];
|
|
@@ -566,15 +602,12 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
566
602
|
.treatAsCommonJs;
|
|
567
603
|
const skipRenderDefaultExport = Boolean(treatAsCommonJs);
|
|
568
604
|
|
|
569
|
-
// A single
|
|
570
|
-
//
|
|
571
|
-
//
|
|
572
|
-
// `__webpack_exports__.x` into a `const`. Concatenated entries already
|
|
573
|
-
// get direct bindings via `definitions` above.
|
|
605
|
+
// A single inlined entry renders at the top level, so its declarations are
|
|
606
|
+
// bindings that can be exported directly, keeping ESM live bindings rather
|
|
607
|
+
// than snapshotting them into a `const`.
|
|
574
608
|
/** @type {Map<string, string> | undefined} */
|
|
575
609
|
let directBindings;
|
|
576
610
|
if (isInlinedEntryWithoutIIFE && !treatAsCommonJs) {
|
|
577
|
-
const { data } = codeGenerationResults.get(module, chunk.runtime);
|
|
578
611
|
const topLevelDeclarations =
|
|
579
612
|
(data && data.get("topLevelDeclarations")) ||
|
|
580
613
|
(module.buildInfo && module.buildInfo.topLevelDeclarations);
|
|
@@ -593,15 +626,8 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
593
626
|
}
|
|
594
627
|
}
|
|
595
628
|
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
const bindingsTakenOver = Boolean(
|
|
599
|
-
module.buildMeta &&
|
|
600
|
-
module.buildMeta.exportsBindingSourceByRuntime &&
|
|
601
|
-
module.buildMeta.exportsBindingSourceByRuntime.has(
|
|
602
|
-
getRuntimeKey(chunk.runtime)
|
|
603
|
-
)
|
|
604
|
-
);
|
|
629
|
+
const bindingsTakenOver =
|
|
630
|
+
data !== undefined && data.has("exportsBindingSource");
|
|
605
631
|
|
|
606
632
|
const moduleExportsInfo = moduleGraph.getExportsInfo(module);
|
|
607
633
|
|
|
@@ -623,7 +649,7 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
623
649
|
}
|
|
624
650
|
|
|
625
651
|
// Try to find all known exports of the entry module
|
|
626
|
-
|
|
652
|
+
for (const exportInfo of exportInfos) {
|
|
627
653
|
if (!exportInfo.provided) continue;
|
|
628
654
|
|
|
629
655
|
const originalName = exportInfo.name;
|
|
@@ -631,20 +657,40 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
631
657
|
if (skipRenderDefaultExport && originalName === "default") continue;
|
|
632
658
|
|
|
633
659
|
// Try to find all exports from the reexported modules
|
|
634
|
-
const target = exportInfo.
|
|
635
|
-
|
|
636
|
-
// export
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
660
|
+
const target = exportInfo.getTarget(moduleGraph);
|
|
661
|
+
|
|
662
|
+
// A re-export is provided even when its target lacks the export, and
|
|
663
|
+
// the path can end in a property access, so every name is looked up.
|
|
664
|
+
if (
|
|
665
|
+
target &&
|
|
666
|
+
target.export &&
|
|
667
|
+
target.export[target.export.length - 1] !== "default" &&
|
|
668
|
+
moduleGraph
|
|
669
|
+
.getExportsInfo(target.module)
|
|
670
|
+
.isExportProvided(target.export) === false
|
|
671
|
+
) {
|
|
672
|
+
continue;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
if (
|
|
676
|
+
target &&
|
|
677
|
+
target.module instanceof ExternalModule &&
|
|
678
|
+
target.export &&
|
|
679
|
+
target.export.length === 1 &&
|
|
680
|
+
codeGenerationResults.has(target.module, chunk.runtime)
|
|
681
|
+
) {
|
|
682
|
+
const reexport = codeGenerationResults.getData(
|
|
683
|
+
target.module,
|
|
684
|
+
chunk.runtime,
|
|
685
|
+
"externalReexport"
|
|
686
|
+
);
|
|
687
|
+
if (reexport) {
|
|
688
|
+
if (!bindingsTakenOver) needExportsDeclaration = true;
|
|
689
|
+
result.add(
|
|
690
|
+
`export { ${toExportName(target.export[0])} as ${toExportName(originalName)} } ${reexport};\n`
|
|
691
|
+
);
|
|
692
|
+
alreadyRenderedExports.add(originalName);
|
|
693
|
+
continue;
|
|
648
694
|
}
|
|
649
695
|
}
|
|
650
696
|
|
|
@@ -690,7 +736,6 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
690
736
|
finalName.includes("("))
|
|
691
737
|
) {
|
|
692
738
|
if (exportInfo.isReexport()) {
|
|
693
|
-
const { data } = codeGenerationResults.get(module, chunk.runtime);
|
|
694
739
|
const topLevelDeclarations =
|
|
695
740
|
(data && data.get("topLevelDeclarations")) ||
|
|
696
741
|
(module.buildInfo && module.buildInfo.topLevelDeclarations);
|
|
@@ -769,19 +814,13 @@ class ModuleLibraryPlugin extends AbstractLibraryPlugin {
|
|
|
769
814
|
renderModuleContent(
|
|
770
815
|
source,
|
|
771
816
|
module,
|
|
772
|
-
{ factory, inlinedInIIFE, chunk },
|
|
817
|
+
{ factory, inlinedInIIFE, chunk, codeGenerationResults },
|
|
773
818
|
libraryContext
|
|
774
819
|
) {
|
|
775
|
-
const
|
|
776
|
-
|
|
777
|
-
const exportsSource =
|
|
778
|
-
|
|
779
|
-
buildMeta.exportsSourceByRuntime &&
|
|
780
|
-
buildMeta.exportsSourceByRuntime.get(runtimeKey);
|
|
781
|
-
const bindingSource =
|
|
782
|
-
buildMeta &&
|
|
783
|
-
buildMeta.exportsBindingSourceByRuntime &&
|
|
784
|
-
buildMeta.exportsBindingSourceByRuntime.get(runtimeKey);
|
|
820
|
+
const { data } = codeGenerationResults.get(module, chunk.runtime);
|
|
821
|
+
if (data === undefined) return source;
|
|
822
|
+
const exportsSource = data.get("exportsSource");
|
|
823
|
+
const bindingSource = data.get("exportsBindingSource");
|
|
785
824
|
|
|
786
825
|
// Re-add the exports source in a factory or IIFE-wrapped startup module; value
|
|
787
826
|
// bindings read the declarations above them, so those go after the body.
|