@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
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
const Dependency = require("../Dependency");
|
|
9
9
|
const { InlinedUsedName } = require("../optimize/InlineExports");
|
|
10
10
|
const makeSerializable = require("../util/makeSerializable");
|
|
11
|
-
const memoize = require("../util/memoize");
|
|
12
|
-
const ExportBindingInitFragment = require("./ExportBindingInitFragment");
|
|
13
11
|
const HarmonyExportInitFragment = require("./HarmonyExportInitFragment");
|
|
12
|
+
|
|
13
|
+
const { ExportBindingType } = HarmonyExportInitFragment;
|
|
14
|
+
|
|
14
15
|
const NullDependency = require("./NullDependency");
|
|
15
16
|
|
|
16
17
|
/** @import { ReplaceSource } from "webpack-sources" */
|
|
@@ -28,11 +29,6 @@ const NullDependency = require("./NullDependency");
|
|
|
28
29
|
* } from "../javascript/JavascriptModule"
|
|
29
30
|
*/
|
|
30
31
|
|
|
31
|
-
// Required here rather than at the top: the plugin reaches back into the dependencies.
|
|
32
|
-
const getJavascriptModulesPlugin = memoize(() =>
|
|
33
|
-
require("../javascript/JavascriptModulesPlugin")
|
|
34
|
-
);
|
|
35
|
-
|
|
36
32
|
class HarmonyExportSpecifierDependency extends NullDependency {
|
|
37
33
|
/**
|
|
38
34
|
* Creates an instance of HarmonyExportSpecifierDependency.
|
|
@@ -147,14 +143,7 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
|
147
143
|
apply(
|
|
148
144
|
dependency,
|
|
149
145
|
source,
|
|
150
|
-
{
|
|
151
|
-
module,
|
|
152
|
-
moduleGraph,
|
|
153
|
-
initFragments,
|
|
154
|
-
runtime,
|
|
155
|
-
runtimeTemplate,
|
|
156
|
-
concatenationScope
|
|
157
|
-
}
|
|
146
|
+
{ module, moduleGraph, initFragments, runtime, concatenationScope }
|
|
158
147
|
) {
|
|
159
148
|
const dep = /** @type {HarmonyExportSpecifierDependency} */ (dependency);
|
|
160
149
|
// a wrapped module's bindings stay inside the wrapper, not in the shared scope
|
|
@@ -180,54 +169,32 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
|
|
180
169
|
return;
|
|
181
170
|
}
|
|
182
171
|
|
|
183
|
-
const
|
|
172
|
+
const valueFormat =
|
|
184
173
|
dep.constValue !== undefined &&
|
|
185
174
|
/** @type {import("../Module").BuildInfo} */ (module.buildInfo)
|
|
186
175
|
.isCircular === false;
|
|
187
176
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const
|
|
191
|
-
|
|
177
|
+
const meta = moduleGraph.getMetaIfExisting(module);
|
|
178
|
+
|
|
179
|
+
const onDemand =
|
|
180
|
+
!concatenationScope &&
|
|
181
|
+
meta !== undefined &&
|
|
182
|
+
meta.onDemandExports === true;
|
|
183
|
+
|
|
184
|
+
/** @type {ExportMap} */
|
|
185
|
+
const map = new Map();
|
|
186
|
+
map.set(used, {
|
|
187
|
+
value: `/* binding */ ${dep.id}`,
|
|
188
|
+
type: valueFormat ? ExportBindingType.Value : ExportBindingType.Getter
|
|
189
|
+
});
|
|
190
|
+
initFragments.push(
|
|
191
|
+
new HarmonyExportInitFragment(
|
|
192
|
+
module.exportsArgument,
|
|
193
|
+
map,
|
|
194
|
+
undefined,
|
|
195
|
+
onDemand
|
|
196
|
+
)
|
|
192
197
|
);
|
|
193
|
-
const onDemand = hooks.onDemandExportsGeneration.isUsed()
|
|
194
|
-
? (/** @type {string} */ definition, /** @type {boolean} */ placeAtEnd) =>
|
|
195
|
-
hooks.onDemandExportsGeneration.call(
|
|
196
|
-
module,
|
|
197
|
-
runtime,
|
|
198
|
-
definition,
|
|
199
|
-
placeAtEnd
|
|
200
|
-
) === true
|
|
201
|
-
: undefined;
|
|
202
|
-
|
|
203
|
-
if (canUseValueBinding) {
|
|
204
|
-
initFragments.push(
|
|
205
|
-
new ExportBindingInitFragment(
|
|
206
|
-
module.exportsArgument,
|
|
207
|
-
[
|
|
208
|
-
{
|
|
209
|
-
name: used,
|
|
210
|
-
value: `/* binding */ ${dep.id}`,
|
|
211
|
-
bindingType: "value"
|
|
212
|
-
}
|
|
213
|
-
],
|
|
214
|
-
true,
|
|
215
|
-
onDemand
|
|
216
|
-
)
|
|
217
|
-
);
|
|
218
|
-
} else {
|
|
219
|
-
/** @type {ExportMap} */
|
|
220
|
-
const map = new Map();
|
|
221
|
-
map.set(used, `/* binding */ ${dep.id}`);
|
|
222
|
-
initFragments.push(
|
|
223
|
-
new HarmonyExportInitFragment(
|
|
224
|
-
module.exportsArgument,
|
|
225
|
-
map,
|
|
226
|
-
undefined,
|
|
227
|
-
onDemand
|
|
228
|
-
)
|
|
229
|
-
);
|
|
230
|
-
}
|
|
231
198
|
}
|
|
232
199
|
};
|
|
233
200
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Alexander Akait @alexander-akait
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
const { ASSET_TYPE } = require("../ModuleSourceTypeConstants");
|
|
9
|
+
const makeSerializable = require("../util/makeSerializable");
|
|
10
|
+
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
|
11
|
+
|
|
12
|
+
/** @import Module from "../Module" */
|
|
13
|
+
/** @import ModuleGraph from "../ModuleGraph" */
|
|
14
|
+
/** @import { GetConditionFn } from "../Dependency" */
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Whether a module is emitted as a file of its own, asked of the module so a
|
|
18
|
+
* plugin emitting the same way is treated alike. `buildInfo.filename` cannot
|
|
19
|
+
* serve here: generation sets it long after a connection has to know whether
|
|
20
|
+
* it is active.
|
|
21
|
+
* @param {Module} module the module to look up
|
|
22
|
+
* @returns {boolean} true when it emits a file
|
|
23
|
+
*/
|
|
24
|
+
const emitsOwnFile = (module) => module.getSourceTypes().has(ASSET_TYPE);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* An `import "..."` that declares no binding. It is a separate class rather
|
|
28
|
+
* than a flag so it costs nothing per instance, and the bound form — much the
|
|
29
|
+
* more common one — keeps the base class and its inline caches untouched.
|
|
30
|
+
*/
|
|
31
|
+
class HarmonyImportBareSideEffectDependency extends HarmonyImportSideEffectDependency {
|
|
32
|
+
/**
|
|
33
|
+
* Returns function to determine if the connection is active.
|
|
34
|
+
* @param {ModuleGraph} moduleGraph module graph
|
|
35
|
+
* @returns {null | false | GetConditionFn} function to determine if the connection is active
|
|
36
|
+
*/
|
|
37
|
+
getCondition(moduleGraph) {
|
|
38
|
+
return (connection) => {
|
|
39
|
+
const refModule = connection.resolvedModule;
|
|
40
|
+
|
|
41
|
+
if (!refModule) return true;
|
|
42
|
+
// Nothing reads the module, so emitting its file is the only thing the
|
|
43
|
+
// import can have been written for.
|
|
44
|
+
if (emitsOwnFile(refModule)) return true;
|
|
45
|
+
|
|
46
|
+
return refModule.getSideEffectsConnectionState(moduleGraph);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
makeSerializable(
|
|
52
|
+
HarmonyImportBareSideEffectDependency,
|
|
53
|
+
"webpack/lib/dependencies/HarmonyImportBareSideEffectDependency"
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
HarmonyImportBareSideEffectDependency.Template =
|
|
57
|
+
HarmonyImportSideEffectDependency.Template;
|
|
58
|
+
|
|
59
|
+
module.exports = HarmonyImportBareSideEffectDependency;
|
|
@@ -11,11 +11,14 @@ const InitFragment = require("../InitFragment");
|
|
|
11
11
|
const Template = require("../Template");
|
|
12
12
|
const AwaitDependenciesInitFragment = require("../async-modules/AwaitDependenciesInitFragment");
|
|
13
13
|
const isGeneratorLowered = require("../async-modules/isGeneratorLowered");
|
|
14
|
+
const memoize = require("../util/memoize");
|
|
14
15
|
const { filterRuntime, mergeRuntime } = require("../util/runtime");
|
|
15
16
|
const HarmonyLinkingError = require("./HarmonyLinkingError");
|
|
16
17
|
const { ImportPhase, ImportPhaseUtils } = require("./ImportPhase");
|
|
17
18
|
const ModuleDependency = require("./ModuleDependency");
|
|
18
19
|
|
|
20
|
+
const getExternalModule = memoize(() => require("../ExternalModule"));
|
|
21
|
+
|
|
19
22
|
/** @import { ReplaceSource } from "webpack-sources" */
|
|
20
23
|
/**
|
|
21
24
|
* @import {
|
|
@@ -97,6 +100,36 @@ const getNonOptionalPart = (members, membersOptionals) => {
|
|
|
97
100
|
|
|
98
101
|
/** @typedef {string[]} Ids */
|
|
99
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Export names a lazy barrel still defers, so they are missing from its provided
|
|
105
|
+
* exports without being absent from the module.
|
|
106
|
+
* @param {Module} module the imported module
|
|
107
|
+
* @returns {Set<string> | true | undefined} deferred names, true when a deferred star re-export may provide any name, undefined when none
|
|
108
|
+
*/
|
|
109
|
+
const getDeferredExports = (module) => {
|
|
110
|
+
const factoryMeta = module.factoryMeta;
|
|
111
|
+
if (factoryMeta === undefined || !factoryMeta.sideEffectFree) return;
|
|
112
|
+
/** @type {Set<string> | undefined} */
|
|
113
|
+
let names;
|
|
114
|
+
for (const dep of module.dependencies) {
|
|
115
|
+
// TODO remove in webpack 6
|
|
116
|
+
// These may be missing on custom dependency types not extending the base Dependency
|
|
117
|
+
if (
|
|
118
|
+
typeof dep.getLazyUntil !== "function" ||
|
|
119
|
+
typeof dep.isLazy !== "function"
|
|
120
|
+
) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (!dep.isLazy()) continue;
|
|
124
|
+
const until = dep.getLazyUntil();
|
|
125
|
+
if (until === Dependency.LAZY_UNTIL_FALLBACK) return true;
|
|
126
|
+
if (until !== Dependency.LAZY_UNTIL_ID) continue;
|
|
127
|
+
if (names === undefined) names = new Set();
|
|
128
|
+
names.add(/** @type {string} */ (dep.getLazyName()));
|
|
129
|
+
}
|
|
130
|
+
return names;
|
|
131
|
+
};
|
|
132
|
+
|
|
100
133
|
class HarmonyImportDependency extends ModuleDependency {
|
|
101
134
|
/**
|
|
102
135
|
* Creates an instance of HarmonyImportDependency.
|
|
@@ -185,9 +218,14 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
185
218
|
const importedModule = /** @type {Module} */ (moduleGraph.getModule(this));
|
|
186
219
|
const meta = moduleGraph.getMeta(module);
|
|
187
220
|
|
|
221
|
+
// An async external is a promise webpack awaits, not a module record with
|
|
222
|
+
// an evaluating state, so deferring its namespace would never throw.
|
|
188
223
|
const isDeferred =
|
|
189
224
|
ImportPhaseUtils.isDefer(this.phase) &&
|
|
190
|
-
!(
|
|
225
|
+
!(
|
|
226
|
+
/** @type {BuildMeta} */ (importedModule.buildMeta).async &&
|
|
227
|
+
importedModule instanceof getExternalModule()
|
|
228
|
+
);
|
|
191
229
|
|
|
192
230
|
const metaKey = isDeferred ? "deferredImportVarMap" : "importVarMap";
|
|
193
231
|
let importVarMap = meta[metaKey];
|
|
@@ -283,48 +321,63 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
283
321
|
(exportsType !== "default-with-named" || ids[0] !== "default") &&
|
|
284
322
|
moduleGraph.isExportProvided(importedModule, ids) === false
|
|
285
323
|
) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
324
|
+
const deferredExports = getDeferredExports(importedModule);
|
|
325
|
+
|
|
326
|
+
if (
|
|
327
|
+
deferredExports !== true &&
|
|
328
|
+
(deferredExports === undefined || !deferredExports.has(ids[0]))
|
|
329
|
+
) {
|
|
330
|
+
// We are sure that it's not provided
|
|
331
|
+
|
|
332
|
+
// Try to provide detailed info in the error message
|
|
333
|
+
let pos = 0;
|
|
334
|
+
let exportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
335
|
+
while (pos < ids.length && exportsInfo) {
|
|
336
|
+
const id = ids[pos++];
|
|
337
|
+
const exportInfo = exportsInfo.getReadOnlyExportInfo(id);
|
|
338
|
+
if (exportInfo.provided === false) {
|
|
339
|
+
// We are sure that it's not provided
|
|
340
|
+
let providedExports = exportsInfo.getProvidedExports();
|
|
341
|
+
// only the first level names the imported module itself
|
|
342
|
+
if (
|
|
343
|
+
pos === 1 &&
|
|
344
|
+
deferredExports !== undefined &&
|
|
345
|
+
Array.isArray(providedExports)
|
|
346
|
+
) {
|
|
347
|
+
providedExports = [...providedExports, ...deferredExports];
|
|
348
|
+
}
|
|
349
|
+
const moreInfo = !Array.isArray(providedExports)
|
|
350
|
+
? " (possible exports unknown)"
|
|
351
|
+
: providedExports.length === 0
|
|
352
|
+
? " (module has no exports)"
|
|
353
|
+
: ` (possible exports: ${providedExports.join(", ")})`;
|
|
354
|
+
return [
|
|
355
|
+
new HarmonyLinkingError(
|
|
356
|
+
`export ${ids
|
|
357
|
+
.slice(0, pos)
|
|
358
|
+
.map((id) => `'${id}'`)
|
|
359
|
+
.join(".")} ${additionalMessage} was not found in '${
|
|
360
|
+
this.userRequest
|
|
361
|
+
}'${moreInfo}`
|
|
362
|
+
)
|
|
363
|
+
];
|
|
364
|
+
}
|
|
365
|
+
exportsInfo =
|
|
366
|
+
/** @type {ExportsInfo} */
|
|
367
|
+
(exportInfo.getNestedExportsInfo());
|
|
312
368
|
}
|
|
313
|
-
exportsInfo =
|
|
314
|
-
/** @type {ExportsInfo} */
|
|
315
|
-
(exportInfo.getNestedExportsInfo());
|
|
316
|
-
}
|
|
317
369
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
370
|
+
// General error message
|
|
371
|
+
return [
|
|
372
|
+
new HarmonyLinkingError(
|
|
373
|
+
`export ${ids
|
|
374
|
+
.map((id) => `'${id}'`)
|
|
375
|
+
.join(".")} ${additionalMessage} was not found in '${
|
|
376
|
+
this.userRequest
|
|
377
|
+
}'`
|
|
378
|
+
)
|
|
379
|
+
];
|
|
380
|
+
}
|
|
328
381
|
}
|
|
329
382
|
}
|
|
330
383
|
switch (exportsType) {
|
|
@@ -468,8 +521,13 @@ HarmonyImportDependency.Template = class HarmonyImportDependencyTemplate extends
|
|
|
468
521
|
}
|
|
469
522
|
|
|
470
523
|
const importStatement = dep.getImportStatement(false, templateContext);
|
|
524
|
+
// A module deferring itself is already evaluating: awaiting it would probe
|
|
525
|
+
// the deferred namespace and force the evaluation it must not trigger.
|
|
526
|
+
const isSelfDeferred =
|
|
527
|
+
ImportPhaseUtils.isDefer(dep.phase) && referencedModule === module;
|
|
471
528
|
if (
|
|
472
529
|
referencedModule &&
|
|
530
|
+
!isSelfDeferred &&
|
|
473
531
|
templateContext.moduleGraph.isAsync(referencedModule)
|
|
474
532
|
) {
|
|
475
533
|
templateContext.initFragments.push(
|