@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
|
@@ -13,15 +13,18 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
13
13
|
const memoize = require("../util/memoize");
|
|
14
14
|
const NullDependency = require("./NullDependency");
|
|
15
15
|
|
|
16
|
-
// Required here rather than at the top: the
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
// Required here rather than at the top: the deferred-namespace runtime imports
|
|
17
|
+
// dependencies from here.
|
|
18
|
+
const getDeferredCycleHelpers = memoize(() =>
|
|
19
|
+
require("../runtime/MakeDeferredNamespaceObjectRuntime")
|
|
19
20
|
);
|
|
20
21
|
|
|
21
22
|
/** @import { ReplaceSource } from "webpack-sources" */
|
|
22
23
|
/** @import Dependency from "../Dependency" */
|
|
23
24
|
/** @import { DependencyTemplateContext } from "../DependencyTemplate" */
|
|
24
|
-
/** @import { BuildMeta } from "../Module" */
|
|
25
|
+
/** @import Module, { BuildMeta } from "../Module" */
|
|
26
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
27
|
+
/** @import ChunkGraph, { ModuleId } from "../ChunkGraph" */
|
|
25
28
|
/**
|
|
26
29
|
* @import {
|
|
27
30
|
* JavascriptModuleBuildInfo
|
|
@@ -39,6 +42,39 @@ makeSerializable(
|
|
|
39
42
|
"webpack/lib/dependencies/HarmonyCompatibilityDependency"
|
|
40
43
|
);
|
|
41
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Key shared by the async modules of one strongly-connected component. The spec
|
|
47
|
+
* records one `[[EvaluationError]]` per component, so a member that already
|
|
48
|
+
* fulfilled still has to report the root's error afterwards.
|
|
49
|
+
* @param {ModuleGraph} moduleGraph the module graph
|
|
50
|
+
* @param {ChunkGraph} chunkGraph the chunk graph
|
|
51
|
+
* @param {Module} module the async module
|
|
52
|
+
* @returns {ModuleId | null} the group key, or null when it is not in an async cycle
|
|
53
|
+
*/
|
|
54
|
+
const getAsyncCycleGroupId = (moduleGraph, chunkGraph, module) => {
|
|
55
|
+
const { getDeferredCycleModules } = getDeferredCycleHelpers();
|
|
56
|
+
const peers = getDeferredCycleModules(moduleGraph, module);
|
|
57
|
+
if (peers === null) return null;
|
|
58
|
+
// The component's smallest async member id names the group, so every member
|
|
59
|
+
// emits the same key and none has to carry the whole peer list.
|
|
60
|
+
let groupId = null;
|
|
61
|
+
let asyncPeerCount = 0;
|
|
62
|
+
for (const peer of peers) {
|
|
63
|
+
if (!moduleGraph.isAsync(peer)) continue;
|
|
64
|
+
asyncPeerCount++;
|
|
65
|
+
const id = chunkGraph.getModuleId(peer);
|
|
66
|
+
if (id !== null && (groupId === null || `${id}` < `${groupId}`)) {
|
|
67
|
+
groupId = id;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (asyncPeerCount === 0) return null;
|
|
71
|
+
const ownId = chunkGraph.getModuleId(module);
|
|
72
|
+
if (ownId !== null && (groupId === null || `${ownId}` < `${groupId}`)) {
|
|
73
|
+
groupId = ownId;
|
|
74
|
+
}
|
|
75
|
+
return groupId;
|
|
76
|
+
};
|
|
77
|
+
|
|
42
78
|
HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate extends (
|
|
43
79
|
NullDependency.Template
|
|
44
80
|
) {
|
|
@@ -56,10 +92,12 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
|
56
92
|
module,
|
|
57
93
|
runtimeTemplate,
|
|
58
94
|
moduleGraph,
|
|
95
|
+
chunkGraph,
|
|
59
96
|
initFragments,
|
|
60
97
|
runtimeRequirements,
|
|
61
98
|
runtime,
|
|
62
|
-
concatenationScope
|
|
99
|
+
concatenationScope,
|
|
100
|
+
getData
|
|
63
101
|
}
|
|
64
102
|
) {
|
|
65
103
|
// a wrapped module has a real exports object that still needs `__esModule`
|
|
@@ -73,20 +111,13 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
|
73
111
|
exportsArgument: module.exportsArgument,
|
|
74
112
|
runtimeRequirements
|
|
75
113
|
});
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
hooks.onDemandExportsGeneration.call(
|
|
84
|
-
module,
|
|
85
|
-
runtime,
|
|
86
|
-
content,
|
|
87
|
-
false
|
|
88
|
-
) === true;
|
|
89
|
-
if (!takenOver) {
|
|
114
|
+
|
|
115
|
+
const meta = moduleGraph.getMetaIfExisting(module);
|
|
116
|
+
if (!concatenationScope && meta && meta.onDemandExports && getData) {
|
|
117
|
+
const data = getData();
|
|
118
|
+
const before = data.get("exportsSource");
|
|
119
|
+
data.set("exportsSource", before ? `${before}${content}` : content);
|
|
120
|
+
} else {
|
|
90
121
|
initFragments.push(
|
|
91
122
|
new InitFragment(
|
|
92
123
|
content,
|
|
@@ -99,9 +130,23 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
|
99
130
|
}
|
|
100
131
|
if (moduleGraph.isAsync(module)) {
|
|
101
132
|
runtimeRequirements.add(RuntimeGlobals.module);
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
133
|
+
// Only `strictModuleErrorHandling` keeps a recorded error for later
|
|
134
|
+
// requires, so the component's peers are worth naming only then.
|
|
135
|
+
const cycleGroupId = runtimeTemplate.outputOptions
|
|
136
|
+
.strictModuleErrorHandling
|
|
137
|
+
? getAsyncCycleGroupId(moduleGraph, chunkGraph, module)
|
|
138
|
+
: null;
|
|
139
|
+
// The group is keyed by module id, so the runtime needs `module.id`.
|
|
140
|
+
if (cycleGroupId !== null) {
|
|
141
|
+
runtimeRequirements.add(RuntimeGlobals.moduleId);
|
|
142
|
+
}
|
|
143
|
+
const isAsyncBody = /** @type {BuildMeta} */ (module.buildMeta).async;
|
|
144
|
+
const hasAwait =
|
|
145
|
+
cycleGroupId === null
|
|
146
|
+
? isAsyncBody
|
|
147
|
+
? ", 1"
|
|
148
|
+
: ""
|
|
149
|
+
: `, ${isAsyncBody ? 1 : 0}, ${JSON.stringify(cycleGroupId)}`;
|
|
105
150
|
// A module-scope `await using` is disposed when its scope ends, so the body
|
|
106
151
|
// needs a block that closes before the module reports completion —
|
|
107
152
|
// otherwise dependents run before disposal is awaited.
|
|
@@ -109,10 +109,9 @@ module.exports = class HarmonyDetectionParserPlugin {
|
|
|
109
109
|
}
|
|
110
110
|
});
|
|
111
111
|
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
//
|
|
115
|
-
// through `unhandledExpressionMemberChain`.
|
|
112
|
+
// `import.meta` parses only as a module, so it marks this one ESM. Staged
|
|
113
|
+
// before the bailing DefinePlugin and ImportMetaPlugin taps, so it observes
|
|
114
|
+
// every access without ending the chain.
|
|
116
115
|
const onImportMeta = () => {
|
|
117
116
|
enableHarmony(false);
|
|
118
117
|
};
|
|
@@ -150,10 +150,16 @@ HarmonyEvaluatedImportSpecifierDependency.Template = class HarmonyEvaluatedImpor
|
|
|
150
150
|
break;
|
|
151
151
|
}
|
|
152
152
|
case "namespace": {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
153
|
+
// Empty ids are an `export * as ns` hop skipped as side-effect free,
|
|
154
|
+
// leaving the target's own namespace, which always exists.
|
|
155
|
+
if (ids.length === 0) {
|
|
156
|
+
value = true;
|
|
157
|
+
} else {
|
|
158
|
+
value =
|
|
159
|
+
ids[0] === "__esModule"
|
|
160
|
+
? ids.length === 1 || undefined
|
|
161
|
+
: exportsInfo.isExportProvided(ids);
|
|
162
|
+
}
|
|
157
163
|
break;
|
|
158
164
|
}
|
|
159
165
|
case "dynamic": {
|
|
@@ -112,10 +112,8 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
|
112
112
|
return true;
|
|
113
113
|
});
|
|
114
114
|
// `export default <namespace binding>` is the same export as
|
|
115
|
-
// `export { ns as default }`, so it
|
|
116
|
-
//
|
|
117
|
-
// otherwise wrap the identifier in a pure-expression guard whose insertions
|
|
118
|
-
// outlive the statement this removes.
|
|
115
|
+
// `export { ns as default }`, so it becomes the same re-export. Stage -10
|
|
116
|
+
// beats the inner-graph tap, whose guard would outlive the removed statement.
|
|
119
117
|
parser.hooks.statement.tap(
|
|
120
118
|
{ name: PLUGIN_NAME, stage: -10 },
|
|
121
119
|
(statement) => {
|
|
@@ -130,6 +128,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
|
130
128
|
/** @type {HarmonySettings | undefined} */
|
|
131
129
|
(parser.getTagData(name, harmonySpecifierTag));
|
|
132
130
|
if (!settings || settings.ids.length !== 0) return;
|
|
131
|
+
settings.used = true;
|
|
133
132
|
if (ImportPhaseUtils.isDefer(settings.phase)) return;
|
|
134
133
|
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
|
135
134
|
parser.state.harmonyNamedExports || new Set());
|
|
@@ -217,14 +216,19 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
|
217
216
|
: undefined,
|
|
218
217
|
constValue
|
|
219
218
|
);
|
|
219
|
+
const isAnonymousClass =
|
|
220
|
+
(node.type === "ClassDeclaration" || node.type === "ClassExpression") &&
|
|
221
|
+
!node.id;
|
|
220
222
|
dep.isAnonymousDefault =
|
|
221
223
|
this.options.anonymousDefaultExportName !== false &&
|
|
222
224
|
(node.type === "ArrowFunctionExpression" ||
|
|
225
|
+
isAnonymousClass ||
|
|
223
226
|
((node.type === "FunctionDeclaration" ||
|
|
224
|
-
node.type === "FunctionExpression"
|
|
225
|
-
node.type === "ClassDeclaration" ||
|
|
226
|
-
node.type === "ClassExpression") &&
|
|
227
|
+
node.type === "FunctionExpression") &&
|
|
227
228
|
!node.id));
|
|
229
|
+
// A class observes its own name from a static initializer, which runs
|
|
230
|
+
// before the name could be patched afterwards, so it is named in place.
|
|
231
|
+
dep.isAnonymousDefaultClass = dep.isAnonymousDefault && isAnonymousClass;
|
|
228
232
|
dep.setLocWithIndex(parser.getLocation(statement), -1);
|
|
229
233
|
parser.state.current.addDependency(dep);
|
|
230
234
|
getInnerGraphUtils(parser.state.compilation).addVariableUsage(
|
|
@@ -255,6 +259,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
|
255
259
|
const settings =
|
|
256
260
|
/** @type {HarmonySettings} */
|
|
257
261
|
(parser.getTagData(id, harmonySpecifierTag));
|
|
262
|
+
if (settings) settings.used = true;
|
|
258
263
|
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
|
259
264
|
parser.state.harmonyNamedExports || new Set());
|
|
260
265
|
harmonyNamedExports.add(name);
|
|
@@ -12,8 +12,11 @@ const RuntimeGlobals = require("../RuntimeGlobals");
|
|
|
12
12
|
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
13
13
|
const makeSerializable = require("../util/makeSerializable");
|
|
14
14
|
const { propertyAccess } = require("../util/property");
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
|
|
17
|
+
|
|
18
|
+
const { ExportBindingType } = HarmonyExportInitFragment;
|
|
19
|
+
|
|
17
20
|
const NullDependency = require("./NullDependency");
|
|
18
21
|
|
|
19
22
|
const DEFAULT_EXPORT_NAME = "default";
|
|
@@ -26,8 +29,8 @@ const DEFAULT_EXPORT_NAME = "default";
|
|
|
26
29
|
/** @import { InlinedValue } from "../optimize/InlineExports" */
|
|
27
30
|
/** @import { Range } from "../javascript/JavascriptParser" */
|
|
28
31
|
/** @typedef {string | { id?: string | undefined, range: Range, prefix: string, suffix: string }} DeclarationId */
|
|
29
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range, string, DeclarationId | undefined, boolean]>} ObjectDeserializerContext */
|
|
30
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range, string, DeclarationId | undefined, boolean]>} ObjectSerializerContext */
|
|
32
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range, string, DeclarationId | undefined, boolean, boolean]>} ObjectDeserializerContext */
|
|
33
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range, string, DeclarationId | undefined, boolean, boolean]>} ObjectSerializerContext */
|
|
31
34
|
/** @import { ExportMap } from "./HarmonyExportInitFragment" */
|
|
32
35
|
/**
|
|
33
36
|
* @import {
|
|
@@ -54,6 +57,8 @@ class HarmonyExportExpressionDependency extends NullDependency {
|
|
|
54
57
|
this.constValue = constValue;
|
|
55
58
|
/** @type {boolean} */
|
|
56
59
|
this.isAnonymousDefault = false;
|
|
60
|
+
/** @type {boolean} */
|
|
61
|
+
this.isAnonymousDefaultClass = false;
|
|
57
62
|
}
|
|
58
63
|
|
|
59
64
|
get type() {
|
|
@@ -126,6 +131,7 @@ class HarmonyExportExpressionDependency extends NullDependency {
|
|
|
126
131
|
.write(this.prefix)
|
|
127
132
|
.write(this.declarationId)
|
|
128
133
|
.write(this.isAnonymousDefault)
|
|
134
|
+
.write(this.isAnonymousDefaultClass)
|
|
129
135
|
.write(this.constValue);
|
|
130
136
|
super.serialize(context);
|
|
131
137
|
}
|
|
@@ -145,8 +151,10 @@ class HarmonyExportExpressionDependency extends NullDependency {
|
|
|
145
151
|
const c4 = c3.rest;
|
|
146
152
|
this.isAnonymousDefault = c4.read();
|
|
147
153
|
const c5 = c4.rest;
|
|
148
|
-
this.
|
|
149
|
-
|
|
154
|
+
this.isAnonymousDefaultClass = c5.read();
|
|
155
|
+
const c6 = c5.rest;
|
|
156
|
+
this.constValue = c6.read();
|
|
157
|
+
super.deserialize(c6.rest);
|
|
150
158
|
}
|
|
151
159
|
}
|
|
152
160
|
|
|
@@ -208,7 +216,10 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
|
|
208
216
|
} else if (used) {
|
|
209
217
|
/** @type {ExportMap} */
|
|
210
218
|
const map = new Map();
|
|
211
|
-
map.set(used,
|
|
219
|
+
map.set(used, {
|
|
220
|
+
value: `/* export default binding */ ${name}`,
|
|
221
|
+
type: ExportBindingType.Getter
|
|
222
|
+
});
|
|
212
223
|
initFragments.push(new HarmonyExportInitFragment(exportsName, map));
|
|
213
224
|
}
|
|
214
225
|
|
|
@@ -253,31 +264,19 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
|
|
253
264
|
defaultIsUsed = true;
|
|
254
265
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
255
266
|
// `export default <expr>` binds an immutable const declaration
|
|
256
|
-
const
|
|
267
|
+
const valueFormat =
|
|
257
268
|
/** @type {import("../Module").BuildInfo} */ (module.buildInfo)
|
|
258
269
|
.isCircular === false;
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
],
|
|
270
|
-
true
|
|
271
|
-
)
|
|
272
|
-
);
|
|
273
|
-
} else {
|
|
274
|
-
/** @type {ExportMap} */
|
|
275
|
-
const map = new Map();
|
|
276
|
-
map.set(used, name);
|
|
277
|
-
initFragments.push(
|
|
278
|
-
new HarmonyExportInitFragment(exportsName, map)
|
|
279
|
-
);
|
|
280
|
-
}
|
|
270
|
+
|
|
271
|
+
/** @type {ExportMap} */
|
|
272
|
+
const map = new Map();
|
|
273
|
+
map.set(used, {
|
|
274
|
+
value: name,
|
|
275
|
+
type: valueFormat
|
|
276
|
+
? ExportBindingType.Value
|
|
277
|
+
: ExportBindingType.Getter
|
|
278
|
+
});
|
|
279
|
+
initFragments.push(new HarmonyExportInitFragment(exportsName, map));
|
|
281
280
|
} else {
|
|
282
281
|
content = `/* unused harmony default export */ var ${name} = `;
|
|
283
282
|
}
|
|
@@ -294,10 +293,9 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
|
|
294
293
|
} else if (used) {
|
|
295
294
|
defaultIsUsed = true;
|
|
296
295
|
runtimeRequirements.add(RuntimeGlobals.exports);
|
|
297
|
-
//
|
|
298
|
-
//
|
|
299
|
-
//
|
|
300
|
-
// assignment target instead. See issue #20793.
|
|
296
|
+
// The TDZ is not reproduced here, `const` being unavailable. No local
|
|
297
|
+
// binding is created either, so the anonymous-default `.name` fix-up
|
|
298
|
+
// below names the assignment target instead. See issue #20793.
|
|
301
299
|
name = `${exportsName}${propertyAccess(
|
|
302
300
|
typeof used === "string" ? [used] : used
|
|
303
301
|
)}`;
|
|
@@ -308,6 +306,22 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
|
|
308
306
|
}
|
|
309
307
|
|
|
310
308
|
if (dep.range) {
|
|
309
|
+
// `export default class {}` names the class "default", and a static
|
|
310
|
+
// initializer reads that name before any later fix-up could run, so
|
|
311
|
+
// the class is created as a property of that name instead.
|
|
312
|
+
if (dep.isAnonymousDefaultClass) {
|
|
313
|
+
source.replace(
|
|
314
|
+
dep.rangeStatement[0],
|
|
315
|
+
dep.range[0] - 1,
|
|
316
|
+
`${content}{ ${DEFAULT_EXPORT_NAME}: (${dep.prefix}`
|
|
317
|
+
);
|
|
318
|
+
source.replace(
|
|
319
|
+
dep.range[1],
|
|
320
|
+
dep.rangeStatement[1] - 0.5,
|
|
321
|
+
`) }.${DEFAULT_EXPORT_NAME};`
|
|
322
|
+
);
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
311
325
|
source.replace(
|
|
312
326
|
dep.rangeStatement[0],
|
|
313
327
|
dep.range[0] - 1,
|