webpack 5.101.2 → 5.102.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 +21 -26
- package/lib/APIPlugin.js +30 -36
- package/lib/AsyncDependenciesBlock.js +1 -4
- package/lib/BannerPlugin.js +0 -1
- package/lib/Cache.js +7 -6
- package/lib/CacheFacade.js +0 -1
- package/lib/Chunk.js +49 -31
- package/lib/ChunkGraph.js +35 -25
- package/lib/ChunkGroup.js +8 -10
- package/lib/ChunkTemplate.js +1 -1
- package/lib/CleanPlugin.js +3 -3
- package/lib/CodeGenerationResults.js +2 -1
- package/lib/CompatibilityPlugin.js +29 -12
- package/lib/Compilation.js +204 -185
- package/lib/Compiler.js +36 -35
- package/lib/ConcatenationScope.js +6 -1
- package/lib/ConditionalInitFragment.js +1 -1
- package/lib/ConstPlugin.js +18 -10
- package/lib/ContextExclusionPlugin.js +0 -1
- package/lib/ContextModule.js +22 -20
- package/lib/ContextModuleFactory.js +30 -11
- package/lib/ContextReplacementPlugin.js +38 -15
- package/lib/DefinePlugin.js +18 -8
- package/lib/DelegatedModule.js +7 -11
- package/lib/DependenciesBlock.js +0 -2
- package/lib/Dependency.js +9 -11
- package/lib/DependencyTemplates.js +1 -3
- package/lib/DllModule.js +1 -7
- package/lib/DllReferencePlugin.js +2 -4
- package/lib/DynamicEntryPlugin.js +0 -2
- package/lib/EntryOptionPlugin.js +0 -5
- package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
- package/lib/EvalDevToolModulePlugin.js +4 -3
- package/lib/EvalSourceMapDevToolPlugin.js +3 -4
- package/lib/ExportsInfo.js +50 -49
- package/lib/ExternalModule.js +84 -52
- package/lib/ExternalModuleFactoryPlugin.js +27 -7
- package/lib/ExternalsPlugin.js +24 -17
- package/lib/FileSystemInfo.js +96 -78
- package/lib/FlagDependencyUsagePlugin.js +3 -4
- package/lib/Generator.js +2 -13
- package/lib/GraphHelpers.js +0 -3
- package/lib/HookWebpackError.js +0 -2
- package/lib/HotModuleReplacementPlugin.js +22 -24
- package/lib/HotUpdateChunk.js +0 -3
- package/lib/IgnorePlugin.js +5 -2
- package/lib/InitFragment.js +41 -29
- package/lib/InvalidDependenciesModuleWarning.js +0 -1
- package/lib/LibManifestPlugin.js +4 -6
- package/lib/LoaderOptionsPlugin.js +1 -10
- package/lib/MainTemplate.js +8 -19
- package/lib/Module.js +32 -20
- package/lib/ModuleFactory.js +1 -1
- package/lib/ModuleFilenameHelpers.js +41 -24
- package/lib/ModuleGraph.js +30 -16
- package/lib/ModuleInfoHeaderPlugin.js +0 -1
- package/lib/ModuleTemplate.js +0 -2
- package/lib/ModuleTypeConstants.js +11 -1
- package/lib/MultiCompiler.js +23 -15
- package/lib/MultiWatching.js +6 -10
- package/lib/NodeStuffPlugin.js +2 -10
- package/lib/NormalModule.js +145 -88
- package/lib/NormalModuleFactory.js +59 -40
- package/lib/OptionsApply.js +1 -1
- package/lib/Parser.js +1 -1
- package/lib/ProgressPlugin.js +6 -10
- package/lib/ProvidePlugin.js +5 -7
- package/lib/RawModule.js +1 -6
- package/lib/RecordIdsPlugin.js +10 -6
- package/lib/ResolverFactory.js +0 -2
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimeModule.js +1 -3
- package/lib/RuntimePlugin.js +26 -22
- package/lib/RuntimeTemplate.js +12 -11
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -2
- package/lib/SourceMapDevToolPlugin.js +6 -11
- package/lib/Stats.js +0 -1
- package/lib/Template.js +6 -11
- package/lib/TemplatedPathPlugin.js +2 -1
- package/lib/WatchIgnorePlugin.js +2 -3
- package/lib/Watching.js +15 -15
- package/lib/WebpackIsIncludedPlugin.js +0 -2
- package/lib/WebpackOptionsApply.js +74 -107
- package/lib/asset/AssetBytesGenerator.js +166 -0
- package/lib/asset/AssetBytesParser.js +37 -0
- package/lib/asset/AssetGenerator.js +20 -34
- package/lib/asset/AssetModulesPlugin.js +34 -16
- package/lib/asset/AssetParser.js +7 -3
- package/lib/asset/AssetSourceGenerator.js +1 -1
- package/lib/asset/RawDataUrlModule.js +3 -2
- package/lib/async-modules/AsyncModuleHelpers.js +6 -4
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -1
- package/lib/buildChunkGraph.js +0 -1
- package/lib/cache/MemoryCachePlugin.js +0 -2
- package/lib/cache/MemoryWithGcCachePlugin.js +0 -2
- package/lib/cache/PackFileCacheStrategy.js +14 -1
- package/lib/cache/ResolverCachePlugin.js +9 -15
- package/lib/config/defaults.js +155 -21
- package/lib/config/normalization.js +18 -3
- package/lib/container/ContainerEntryDependency.js +0 -1
- package/lib/container/ContainerEntryModule.js +3 -7
- package/lib/container/ContainerPlugin.js +1 -2
- package/lib/container/ContainerReferencePlugin.js +0 -1
- package/lib/container/FallbackDependency.js +2 -1
- package/lib/container/FallbackModule.js +6 -7
- package/lib/container/ModuleFederationPlugin.js +0 -1
- package/lib/container/RemoteModule.js +8 -8
- package/lib/container/RemoteRuntimeModule.js +2 -2
- package/lib/css/CssGenerator.js +3 -6
- package/lib/css/CssLoadingRuntimeModule.js +6 -9
- package/lib/css/CssModulesPlugin.js +11 -13
- package/lib/css/CssParser.js +3 -3
- package/lib/css/walkCssTokens.js +1 -1
- package/lib/debug/ProfilingPlugin.js +35 -8
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -17
- package/lib/dependencies/AMDPlugin.js +2 -2
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -2
- package/lib/dependencies/CachedConstDependency.js +0 -4
- package/lib/dependencies/CommonJsExportRequireDependency.js +20 -14
- package/lib/dependencies/CommonJsExportsDependency.js +2 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -5
- package/lib/dependencies/CommonJsFullRequireDependency.js +6 -4
- package/lib/dependencies/CommonJsImportsParserPlugin.js +16 -7
- package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
- package/lib/dependencies/ConstDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +9 -4
- package/lib/dependencies/ContextDependencyHelpers.js +2 -2
- package/lib/dependencies/ContextDependencyTemplateAsId.js +9 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +9 -9
- package/lib/dependencies/ContextElementDependency.js +22 -11
- package/lib/dependencies/CssIcssImportDependency.js +0 -2
- package/lib/dependencies/CssIcssSymbolDependency.js +2 -2
- package/lib/dependencies/CssImportDependency.js +0 -8
- package/lib/dependencies/CssLocalIdentifierDependency.js +3 -4
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -2
- package/lib/dependencies/CssUrlDependency.js +0 -6
- package/lib/dependencies/ExportsInfoDependency.js +7 -9
- package/lib/dependencies/ExternalModuleDependency.js +0 -3
- package/lib/dependencies/ExternalModuleInitFragment.js +1 -1
- package/lib/dependencies/HarmonyAcceptDependency.js +1 -1
- package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +0 -14
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +3 -3
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +4 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +29 -35
- package/lib/dependencies/HarmonyImportDependency.js +30 -14
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +38 -24
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +0 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -31
- package/lib/dependencies/HarmonyModulesPlugin.js +3 -3
- package/lib/dependencies/ImportDependency.js +18 -6
- package/lib/dependencies/ImportEagerDependency.js +2 -3
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -5
- package/lib/dependencies/ImportMetaContextPlugin.js +0 -1
- package/lib/dependencies/ImportMetaPlugin.js +8 -1
- package/lib/dependencies/ImportParserPlugin.js +294 -45
- package/lib/dependencies/ImportWeakDependency.js +2 -3
- package/lib/dependencies/JsonExportsDependency.js +0 -1
- package/lib/dependencies/LoaderDependency.js +0 -3
- package/lib/dependencies/LoaderImportDependency.js +0 -3
- package/lib/dependencies/LoaderPlugin.js +11 -5
- package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
- package/lib/dependencies/ModuleDependency.js +3 -9
- package/lib/dependencies/NullDependency.js +2 -0
- package/lib/dependencies/ProvidedDependency.js +6 -8
- package/lib/dependencies/PureExpressionDependency.js +0 -1
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +0 -1
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -2
- package/lib/dependencies/RequireIncludeDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +2 -2
- package/lib/dependencies/RuntimeRequirementsDependency.js +2 -3
- package/lib/dependencies/StaticExportsDependency.js +3 -5
- package/lib/dependencies/URLDependency.js +2 -7
- package/lib/dependencies/URLPlugin.js +1 -2
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +2 -2
- package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
- package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
- package/lib/dependencies/WorkerDependency.js +2 -3
- package/lib/dependencies/WorkerPlugin.js +3 -9
- package/lib/dependencies/processExportInfo.js +2 -3
- package/lib/esm/ModuleChunkFormatPlugin.js +0 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +2 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -7
- package/lib/hmr/LazyCompilationPlugin.js +6 -4
- package/lib/hmr/lazyCompilationBackend.js +13 -10
- package/lib/ids/DeterministicChunkIdsPlugin.js +0 -1
- package/lib/ids/NamedChunkIdsPlugin.js +1 -6
- package/lib/ids/NamedModuleIdsPlugin.js +1 -5
- package/lib/ids/NaturalChunkIdsPlugin.js +0 -1
- package/lib/ids/NaturalModuleIdsPlugin.js +0 -1
- package/lib/ids/OccurrenceChunkIdsPlugin.js +0 -1
- package/lib/ids/OccurrenceModuleIdsPlugin.js +0 -1
- package/lib/ids/SyncModuleIdsPlugin.js +4 -3
- package/lib/index.js +8 -7
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -1
- package/lib/javascript/BasicEvaluatedExpression.js +13 -6
- package/lib/javascript/ChunkFormatHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +0 -1
- package/lib/javascript/JavascriptGenerator.js +2 -3
- package/lib/javascript/JavascriptModulesPlugin.js +44 -21
- package/lib/javascript/JavascriptParser.js +159 -93
- package/lib/javascript/JavascriptParserHelpers.js +2 -2
- package/lib/javascript/StartupHelpers.js +2 -4
- package/lib/json/JsonData.js +1 -1
- package/lib/json/JsonGenerator.js +4 -5
- package/lib/json/JsonModulesPlugin.js +0 -3
- package/lib/json/JsonParser.js +4 -2
- package/lib/library/AbstractLibraryPlugin.js +2 -2
- package/lib/library/AmdLibraryPlugin.js +0 -1
- package/lib/library/AssignLibraryPlugin.js +23 -12
- package/lib/library/EnableLibraryPlugin.js +7 -11
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -20
- package/lib/library/JsonpLibraryPlugin.js +5 -2
- package/lib/library/ModuleLibraryPlugin.js +88 -43
- package/lib/library/SystemLibraryPlugin.js +0 -1
- package/lib/library/UmdLibraryPlugin.js +12 -18
- package/lib/logging/Logger.js +12 -10
- package/lib/logging/createConsoleLogger.js +15 -14
- package/lib/logging/truncateArgs.js +1 -1
- package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
- package/lib/node/NodeWatchFileSystem.js +4 -4
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/RequireChunkLoadingRuntimeModule.js +5 -2
- package/lib/node/nodeConsole.js +2 -2
- package/lib/optimize/AggressiveSplittingPlugin.js +2 -0
- package/lib/optimize/ConcatenatedModule.js +142 -100
- package/lib/optimize/InnerGraph.js +17 -11
- package/lib/optimize/InnerGraphPlugin.js +0 -3
- package/lib/optimize/ModuleConcatenationPlugin.js +3 -4
- package/lib/optimize/RuntimeChunkPlugin.js +0 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +3 -10
- package/lib/optimize/SplitChunksPlugin.js +46 -40
- package/lib/performance/SizeLimitsPlugin.js +2 -1
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +0 -2
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +0 -1
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
- package/lib/rules/BasicMatcherRulePlugin.js +0 -2
- package/lib/rules/ObjectMatcherRulePlugin.js +0 -1
- package/lib/rules/RuleSetCompiler.js +8 -6
- package/lib/runtime/BaseUriRuntimeModule.js +2 -2
- package/lib/runtime/CompatRuntimeModule.js +0 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +8 -9
- package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
- package/lib/runtime/PublicPathRuntimeModule.js +2 -2
- package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
- package/lib/runtime/SystemContextRuntimeModule.js +0 -2
- package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
- package/lib/schemes/DataUriPlugin.js +2 -28
- package/lib/schemes/FileUriPlugin.js +5 -2
- package/lib/schemes/HttpUriPlugin.js +4 -2
- package/lib/schemes/VirtualUrlPlugin.js +11 -11
- package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
- package/lib/serialization/ObjectMiddleware.js +30 -19
- package/lib/serialization/SerializerMiddleware.js +1 -3
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +3 -5
- package/lib/sharing/ConsumeSharedPlugin.js +2 -4
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -6
- package/lib/sharing/ProvideSharedModule.js +3 -7
- package/lib/sharing/SharePlugin.js +0 -2
- package/lib/sharing/ShareRuntimeModule.js +4 -1
- package/lib/sharing/resolveMatchedConfigs.js +14 -6
- package/lib/sharing/utils.js +0 -6
- package/lib/stats/DefaultStatsFactoryPlugin.js +178 -94
- package/lib/stats/DefaultStatsPresetPlugin.js +15 -9
- package/lib/stats/DefaultStatsPrinterPlugin.js +77 -113
- package/lib/stats/StatsFactory.js +14 -11
- package/lib/url/URLParserPlugin.js +2 -4
- package/lib/util/ArrayHelpers.js +4 -4
- package/lib/util/AsyncQueue.js +1 -0
- package/lib/util/LazySet.js +2 -2
- package/lib/util/StackedCacheMap.js +0 -2
- package/lib/util/TupleSet.js +9 -4
- package/lib/util/URLAbsoluteSpecifier.js +0 -1
- package/lib/util/WeakTupleMap.js +1 -1
- package/lib/util/chainedImports.js +3 -1
- package/lib/util/cleverMerge.js +15 -18
- package/lib/util/comparators.js +2 -4
- package/lib/util/compileBooleanMatcher.js +11 -9
- package/lib/util/concatenate.js +1 -2
- package/lib/util/create-schema-validation.js +0 -1
- package/lib/util/dataURL.js +39 -0
- package/lib/util/deprecation.js +29 -31
- package/lib/util/deterministicGrouping.js +34 -30
- package/lib/util/extractSourceMap.js +319 -0
- package/lib/util/findGraphRoots.js +15 -5
- package/lib/util/fs.js +29 -8
- package/lib/util/semver.js +9 -8
- package/lib/util/smartGrouping.js +41 -26
- package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
- package/lib/wasm/EnableWasmLoadingPlugin.js +3 -2
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +5 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +2 -13
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -9
- package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -4
- package/lib/wasm-sync/WebAssemblyGenerator.js +1 -3
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -4
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -7
- package/lib/wasm-sync/WebAssemblyParser.js +1 -4
- package/lib/web/JsonpChunkLoadingPlugin.js +2 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
- package/lib/web/JsonpTemplatePlugin.js +0 -1
- package/lib/webpack.js +21 -8
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +13 -13
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +77 -93
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/IgnorePlugin.json +1 -1
- package/schemas/plugins/ProgressPlugin.json +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.json +5 -1
- package/schemas/plugins/schemes/VirtualUrlPlugin.json +3 -3
- package/types.d.ts +1140 -505
- package/SECURITY.md +0 -9
|
@@ -13,19 +13,10 @@ const HarmonyExports = require("./HarmonyExports");
|
|
|
13
13
|
|
|
14
14
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
15
15
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
16
|
-
/** @typedef {import("./HarmonyModulesPlugin").HarmonyModulesPluginOptions} HarmonyModulesPluginOptions */
|
|
17
16
|
|
|
18
17
|
const PLUGIN_NAME = "HarmonyDetectionParserPlugin";
|
|
19
18
|
|
|
20
19
|
module.exports = class HarmonyDetectionParserPlugin {
|
|
21
|
-
/**
|
|
22
|
-
* @param {HarmonyModulesPluginOptions} options options
|
|
23
|
-
*/
|
|
24
|
-
constructor(options) {
|
|
25
|
-
const { topLevelAwait = false } = options || {};
|
|
26
|
-
this.topLevelAwait = topLevelAwait;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
20
|
/**
|
|
30
21
|
* @param {JavascriptParser} parser the parser
|
|
31
22
|
* @returns {void}
|
|
@@ -66,11 +57,6 @@ module.exports = class HarmonyDetectionParserPlugin {
|
|
|
66
57
|
|
|
67
58
|
parser.hooks.topLevelAwait.tap(PLUGIN_NAME, () => {
|
|
68
59
|
const module = parser.state.module;
|
|
69
|
-
if (!this.topLevelAwait) {
|
|
70
|
-
throw new Error(
|
|
71
|
-
"The top-level-await experiment is not enabled (set experiments.topLevelAwait: true to enable it)"
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
60
|
if (!HarmonyExports.isEnabled(parser.state)) {
|
|
75
61
|
throw new Error(
|
|
76
62
|
"Top-level-await is only supported in EcmaScript Modules"
|
|
@@ -9,7 +9,6 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
9
9
|
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency");
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
12
|
-
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
13
12
|
/** @typedef {import("../Dependency")} Dependency */
|
|
14
13
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
15
14
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
@@ -18,6 +17,7 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
|
18
17
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
19
18
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
20
19
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
20
|
+
/** @typedef {import("./HarmonyImportDependency").Ids} Ids */
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* Dependency for static evaluating import specifier. e.g.
|
|
@@ -30,10 +30,10 @@ class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDe
|
|
|
30
30
|
/**
|
|
31
31
|
* @param {string} request the request string
|
|
32
32
|
* @param {number} sourceOrder source order
|
|
33
|
-
* @param {
|
|
33
|
+
* @param {Ids} ids ids
|
|
34
34
|
* @param {string} name name
|
|
35
35
|
* @param {Range} range location in source code
|
|
36
|
-
* @param {ImportAttributes} attributes import assertions
|
|
36
|
+
* @param {ImportAttributes | undefined} attributes import assertions
|
|
37
37
|
* @param {string} operator operator
|
|
38
38
|
*/
|
|
39
39
|
constructor(request, sourceOrder, ids, name, range, attributes, operator) {
|
|
@@ -25,6 +25,7 @@ const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDepe
|
|
|
25
25
|
/** @typedef {import("../javascript/JavascriptParser").ClassDeclaration} ClassDeclaration */
|
|
26
26
|
/** @typedef {import("../javascript/JavascriptParser").FunctionDeclaration} FunctionDeclaration */
|
|
27
27
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
28
|
+
/** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
|
|
28
29
|
|
|
29
30
|
const { HarmonyStarExportsList } = HarmonyExportImportedSpecifierDependency;
|
|
30
31
|
|
|
@@ -156,7 +157,9 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
|
156
157
|
parser.hooks.exportSpecifier.tap(
|
|
157
158
|
PLUGIN_NAME,
|
|
158
159
|
(statement, id, name, idx) => {
|
|
159
|
-
const settings =
|
|
160
|
+
const settings =
|
|
161
|
+
/** @type {HarmonySettings} */
|
|
162
|
+
(parser.getTagData(id, harmonySpecifierTag));
|
|
160
163
|
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
|
161
164
|
parser.state.harmonyNamedExports || new Set());
|
|
162
165
|
harmonyNamedExports.add(name);
|
|
@@ -33,17 +33,19 @@ const processExportInfo = require("./processExportInfo");
|
|
|
33
33
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
34
34
|
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
|
35
35
|
/** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
|
|
36
|
-
/** @typedef {import("../Dependency").
|
|
36
|
+
/** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
|
|
37
|
+
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
37
38
|
/** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
|
|
38
|
-
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
|
39
39
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
40
40
|
/** @typedef {import("../ExportsInfo")} ExportsInfo */
|
|
41
41
|
/** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
|
|
42
|
+
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
|
|
42
43
|
/** @typedef {import("../ExportsInfo").UsedName} UsedName */
|
|
43
44
|
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
|
|
44
45
|
/** @typedef {import("../Module")} Module */
|
|
45
46
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
46
47
|
/** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
|
|
48
|
+
/** @typedef {import("../Module").ExportsType} ExportsType */
|
|
47
49
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
48
50
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
49
51
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
@@ -52,10 +54,9 @@ const processExportInfo = require("./processExportInfo");
|
|
|
52
54
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
53
55
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
54
56
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
55
|
-
/** @typedef {import("../util/Hash")} Hash */
|
|
56
57
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
58
|
+
/** @typedef {import("./HarmonyImportDependency").Ids} Ids */
|
|
57
59
|
/** @typedef {import("./HarmonyImportDependency").ExportPresenceMode} ExportPresenceMode */
|
|
58
|
-
/** @typedef {import("./processExportInfo").ReferencedExports} ReferencedExports */
|
|
59
60
|
|
|
60
61
|
/** @typedef {"missing"|"unused"|"empty-star"|"reexport-dynamic-default"|"reexport-named-default"|"reexport-namespace-object"|"reexport-fake-namespace-object"|"reexport-undefined"|"normal-reexport"|"dynamic-reexport"} ExportModeType */
|
|
61
62
|
|
|
@@ -66,7 +67,7 @@ const idsSymbol = Symbol("HarmonyExportImportedSpecifierDependency.ids");
|
|
|
66
67
|
class NormalReexportItem {
|
|
67
68
|
/**
|
|
68
69
|
* @param {string} name export name
|
|
69
|
-
* @param {
|
|
70
|
+
* @param {Ids} ids reexported ids from other module
|
|
70
71
|
* @param {ExportInfo} exportInfo export info from other module
|
|
71
72
|
* @param {boolean} checked true, if it should be checked at runtime if this export exists
|
|
72
73
|
* @param {boolean} hidden true, if it is hidden behind another active export in the same module
|
|
@@ -119,23 +120,22 @@ class ExportMode {
|
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
122
|
|
|
122
|
-
/** @typedef {string[]} Names */
|
|
123
123
|
/** @typedef {number[]} DependencyIndices */
|
|
124
124
|
|
|
125
125
|
/**
|
|
126
126
|
* @param {ModuleGraph} moduleGraph module graph
|
|
127
|
-
* @param {
|
|
128
|
-
* @param {
|
|
129
|
-
* @returns {{ names:
|
|
127
|
+
* @param {HarmonyExportImportedSpecifierDependency[]} dependencies dependencies
|
|
128
|
+
* @param {HarmonyExportImportedSpecifierDependency=} additionalDependency additional dependency
|
|
129
|
+
* @returns {{ names: ExportInfoName[], dependencyIndices: DependencyIndices }} result
|
|
130
130
|
*/
|
|
131
131
|
const determineExportAssignments = (
|
|
132
132
|
moduleGraph,
|
|
133
133
|
dependencies,
|
|
134
134
|
additionalDependency
|
|
135
135
|
) => {
|
|
136
|
-
/** @type {Set<
|
|
136
|
+
/** @type {Set<ExportInfoName>} */
|
|
137
137
|
const names = new Set();
|
|
138
|
-
/** @type {
|
|
138
|
+
/** @type {DependencyIndices} */
|
|
139
139
|
const dependencyIndices = [];
|
|
140
140
|
|
|
141
141
|
if (additionalDependency) {
|
|
@@ -167,7 +167,7 @@ const determineExportAssignments = (
|
|
|
167
167
|
|
|
168
168
|
/**
|
|
169
169
|
* @param {object} options options
|
|
170
|
-
* @param {
|
|
170
|
+
* @param {ExportInfoName[]} options.names names
|
|
171
171
|
* @param {DependencyIndices} options.dependencyIndices dependency indices
|
|
172
172
|
* @param {string} name name
|
|
173
173
|
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency>} dependencies dependencies
|
|
@@ -339,7 +339,7 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
|
|
339
339
|
exportName,
|
|
340
340
|
[exportName],
|
|
341
341
|
exportsInfo.getReadOnlyExportInfo(exportName),
|
|
342
|
-
/** @type {
|
|
342
|
+
/** @type {Checked} */
|
|
343
343
|
(checked).has(exportName),
|
|
344
344
|
false
|
|
345
345
|
)
|
|
@@ -361,7 +361,6 @@ const getMode = (moduleGraph, dep, runtimeKey) => {
|
|
|
361
361
|
return mode;
|
|
362
362
|
};
|
|
363
363
|
|
|
364
|
-
/** @typedef {string[]} Ids */
|
|
365
364
|
/** @typedef {Set<string>} Exports */
|
|
366
365
|
/** @typedef {Set<string>} Checked */
|
|
367
366
|
/** @typedef {Set<string>} Hidden */
|
|
@@ -515,7 +514,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
515
514
|
importedExportsInfo.getReadOnlyExportInfo(name);
|
|
516
515
|
if (importedExportInfo.provided === false) continue;
|
|
517
516
|
if (hiddenExports !== undefined && hiddenExports.has(name)) {
|
|
518
|
-
/** @type {
|
|
517
|
+
/** @type {Hidden} */
|
|
519
518
|
(hidden).add(name);
|
|
520
519
|
continue;
|
|
521
520
|
}
|
|
@@ -567,7 +566,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
567
566
|
* Returns list of exports referenced by this dependency
|
|
568
567
|
* @param {ModuleGraph} moduleGraph module graph
|
|
569
568
|
* @param {RuntimeSpec} runtime the runtime for which the module is analysed
|
|
570
|
-
* @returns {
|
|
569
|
+
* @returns {ReferencedExports} referenced exports
|
|
571
570
|
*/
|
|
572
571
|
getReferencedExports(moduleGraph, runtime) {
|
|
573
572
|
const mode = this.getMode(moduleGraph, runtime);
|
|
@@ -586,7 +585,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
586
585
|
if (!mode.partialNamespaceExportInfo) {
|
|
587
586
|
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
588
587
|
}
|
|
589
|
-
/** @type {
|
|
588
|
+
/** @type {RawReferencedExports} */
|
|
590
589
|
const referencedExports = [];
|
|
591
590
|
processExportInfo(
|
|
592
591
|
runtime,
|
|
@@ -602,7 +601,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
602
601
|
if (!mode.partialNamespaceExportInfo) {
|
|
603
602
|
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
604
603
|
}
|
|
605
|
-
/** @type {
|
|
604
|
+
/** @type {RawReferencedExports} */
|
|
606
605
|
const referencedExports = [];
|
|
607
606
|
processExportInfo(
|
|
608
607
|
runtime,
|
|
@@ -618,7 +617,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
618
617
|
return Dependency.EXPORTS_OBJECT_REFERENCED;
|
|
619
618
|
|
|
620
619
|
case "normal-reexport": {
|
|
621
|
-
/** @type {
|
|
620
|
+
/** @type {RawReferencedExports} */
|
|
622
621
|
const referencedExports = [];
|
|
623
622
|
for (const {
|
|
624
623
|
ids,
|
|
@@ -638,7 +637,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
638
637
|
|
|
639
638
|
/**
|
|
640
639
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
641
|
-
* @returns {{ names:
|
|
640
|
+
* @returns {{ names: ExportInfoName[], namesSlice: number, dependencyIndices: DependencyIndices, dependencyIndex: number } | undefined} exported names and their origin dependency
|
|
642
641
|
*/
|
|
643
642
|
_discoverActiveExportsFromOtherStarExports(moduleGraph) {
|
|
644
643
|
if (!this.otherStarExports) return;
|
|
@@ -880,7 +879,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
|
880
879
|
const importedModule = moduleGraph.getModule(this);
|
|
881
880
|
if (importedModule) {
|
|
882
881
|
const exportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
883
|
-
/** @type {Map<string,
|
|
882
|
+
/** @type {Map<string, ExportInfoName[]>} */
|
|
884
883
|
const conflicts = new Map();
|
|
885
884
|
for (const exportInfo of exportsInfo.orderedExports) {
|
|
886
885
|
if (exportInfo.provided !== true) continue;
|
|
@@ -980,8 +979,6 @@ makeSerializable(
|
|
|
980
979
|
"webpack/lib/dependencies/HarmonyExportImportedSpecifierDependency"
|
|
981
980
|
);
|
|
982
981
|
|
|
983
|
-
module.exports = HarmonyExportImportedSpecifierDependency;
|
|
984
|
-
|
|
985
982
|
HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedSpecifierDependencyTemplate extends (
|
|
986
983
|
HarmonyImportDependency.Template
|
|
987
984
|
) {
|
|
@@ -1233,14 +1230,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1233
1230
|
mode.hidden
|
|
1234
1231
|
)
|
|
1235
1232
|
: /** @type {ExportModeIgnored} */ (mode.ignored);
|
|
1236
|
-
const modern =
|
|
1237
|
-
runtimeTemplate.supportsConst() &&
|
|
1238
|
-
runtimeTemplate.supportsArrowFunction();
|
|
1239
1233
|
let content =
|
|
1240
1234
|
"/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n" +
|
|
1241
|
-
`/* harmony reexport (unknown) */ for(${
|
|
1242
|
-
modern ? "const" : "var"
|
|
1243
|
-
} __WEBPACK_IMPORT_KEY__ in ${importVar}) `;
|
|
1235
|
+
`/* harmony reexport (unknown) */ for(${runtimeTemplate.renderConst()} __WEBPACK_IMPORT_KEY__ in ${importVar}) `;
|
|
1244
1236
|
|
|
1245
1237
|
// Filter out exports which are defined by other exports
|
|
1246
1238
|
// and filter out default export because it cannot be reexported with *
|
|
@@ -1255,7 +1247,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1255
1247
|
}
|
|
1256
1248
|
|
|
1257
1249
|
content += "__WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = ";
|
|
1258
|
-
content +=
|
|
1250
|
+
content += runtimeTemplate.supportsArrowFunction()
|
|
1259
1251
|
? `() => ${importVar}[__WEBPACK_IMPORT_KEY__]`
|
|
1260
1252
|
: `function(key) { return ${importVar}[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)`;
|
|
1261
1253
|
|
|
@@ -1285,7 +1277,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1285
1277
|
* @param {string} comment comment
|
|
1286
1278
|
* @param {UsedName} key key
|
|
1287
1279
|
* @param {string} name name
|
|
1288
|
-
* @param {
|
|
1280
|
+
* @param {UsedName | null} valueKey value key
|
|
1289
1281
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
1290
1282
|
* @returns {HarmonyExportInitFragment} harmony export init fragment
|
|
1291
1283
|
*/
|
|
@@ -1310,7 +1302,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1310
1302
|
|
|
1311
1303
|
/**
|
|
1312
1304
|
* @param {Module} module module
|
|
1313
|
-
* @param {
|
|
1305
|
+
* @param {UsedName} key key
|
|
1314
1306
|
* @param {string} name name
|
|
1315
1307
|
* @param {number} fakeType fake type
|
|
1316
1308
|
* @param {RuntimeRequirements} runtimeRequirements runtime requirements
|
|
@@ -1349,10 +1341,10 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
|
|
1349
1341
|
/**
|
|
1350
1342
|
* @param {Module} module module
|
|
1351
1343
|
* @param {ChunkGraph} chunkGraph chunkGraph
|
|
1352
|
-
* @param {
|
|
1344
|
+
* @param {UsedName} key key
|
|
1353
1345
|
* @param {string} name name
|
|
1354
|
-
* @param {
|
|
1355
|
-
* @param {
|
|
1346
|
+
* @param {ExportsType} exportsType exportsType
|
|
1347
|
+
* @param {RuntimeRequirements} runtimeRequirements runtimeRequirements
|
|
1356
1348
|
* @returns {InitFragment<GenerateContext>[]} fragments
|
|
1357
1349
|
*/
|
|
1358
1350
|
getReexportDeferredNamespaceObjectFragments(
|
|
@@ -1484,4 +1476,6 @@ makeSerializable(
|
|
|
1484
1476
|
"HarmonyStarExportsList"
|
|
1485
1477
|
);
|
|
1486
1478
|
|
|
1479
|
+
module.exports = HarmonyExportImportedSpecifierDependency;
|
|
1487
1480
|
module.exports.HarmonyStarExportsList = HarmonyStarExportsList;
|
|
1481
|
+
module.exports.idsSymbol = idsSymbol;
|
|
@@ -15,21 +15,16 @@ const { filterRuntime, mergeRuntime } = require("../util/runtime");
|
|
|
15
15
|
const ModuleDependency = require("./ModuleDependency");
|
|
16
16
|
|
|
17
17
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
|
18
|
-
/** @typedef {import("
|
|
19
|
-
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
|
20
|
-
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
|
21
|
-
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
|
18
|
+
/** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
|
|
22
19
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
23
20
|
/** @typedef {import("../ExportsInfo")} ExportsInfo */
|
|
24
21
|
/** @typedef {import("../Module")} Module */
|
|
25
22
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
26
23
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
27
|
-
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
|
28
24
|
/** @typedef {import("../WebpackError")} WebpackError */
|
|
29
25
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
30
26
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
31
27
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
32
|
-
/** @typedef {import("../util/Hash")} Hash */
|
|
33
28
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
34
29
|
|
|
35
30
|
/** @typedef {0 | 1 | 2 | 3 | false} ExportPresenceMode */
|
|
@@ -59,6 +54,8 @@ const ExportPresenceModes = {
|
|
|
59
54
|
}
|
|
60
55
|
};
|
|
61
56
|
|
|
57
|
+
/** @typedef {string[]} Ids */
|
|
58
|
+
|
|
62
59
|
class HarmonyImportDependency extends ModuleDependency {
|
|
63
60
|
/**
|
|
64
61
|
* @param {string} request request string
|
|
@@ -69,7 +66,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
69
66
|
constructor(request, sourceOrder, attributes, defer) {
|
|
70
67
|
super(request);
|
|
71
68
|
this.sourceOrder = sourceOrder;
|
|
72
|
-
this.
|
|
69
|
+
this.attributes = attributes;
|
|
73
70
|
this.defer = defer;
|
|
74
71
|
}
|
|
75
72
|
|
|
@@ -77,11 +74,22 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
77
74
|
return "esm";
|
|
78
75
|
}
|
|
79
76
|
|
|
77
|
+
/**
|
|
78
|
+
* @returns {string | null} an identifier to merge equal requests
|
|
79
|
+
*/
|
|
80
|
+
getResourceIdentifier() {
|
|
81
|
+
let str = super.getResourceIdentifier();
|
|
82
|
+
if (this.attributes !== undefined) {
|
|
83
|
+
str += JSON.stringify(this.attributes);
|
|
84
|
+
}
|
|
85
|
+
return str;
|
|
86
|
+
}
|
|
87
|
+
|
|
80
88
|
/**
|
|
81
89
|
* Returns list of exports referenced by this dependency
|
|
82
90
|
* @param {ModuleGraph} moduleGraph module graph
|
|
83
91
|
* @param {RuntimeSpec} runtime the runtime for which the module is analysed
|
|
84
|
-
* @returns {
|
|
92
|
+
* @returns {ReferencedExports} referenced exports
|
|
85
93
|
*/
|
|
86
94
|
getReferencedExports(moduleGraph, runtime) {
|
|
87
95
|
return Dependency.NO_EXPORTS_REFERENCED;
|
|
@@ -98,17 +106,23 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
98
106
|
|
|
99
107
|
const metaKey = defer ? "deferredImportVarMap" : "importVarMap";
|
|
100
108
|
let importVarMap = meta[metaKey];
|
|
101
|
-
if (!importVarMap)
|
|
109
|
+
if (!importVarMap) {
|
|
110
|
+
meta[metaKey] = importVarMap =
|
|
111
|
+
/** @type {Map<Module, string>} */
|
|
112
|
+
(new Map());
|
|
113
|
+
}
|
|
102
114
|
|
|
103
115
|
let importVar = importVarMap.get(
|
|
104
|
-
/** @type {Module} */
|
|
116
|
+
/** @type {Module} */
|
|
117
|
+
(moduleGraph.getModule(this))
|
|
105
118
|
);
|
|
106
119
|
if (importVar) return importVar;
|
|
107
120
|
importVar = `${Template.toIdentifier(
|
|
108
121
|
`${this.userRequest}`
|
|
109
122
|
)}__WEBPACK_${this.defer ? "DEFERRED_" : ""}IMPORTED_MODULE_${importVarMap.size}__`;
|
|
110
123
|
importVarMap.set(
|
|
111
|
-
/** @type {Module} */
|
|
124
|
+
/** @type {Module} */
|
|
125
|
+
(moduleGraph.getModule(this)),
|
|
112
126
|
importVar
|
|
113
127
|
);
|
|
114
128
|
return importVar;
|
|
@@ -156,7 +170,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
156
170
|
|
|
157
171
|
/**
|
|
158
172
|
* @param {ModuleGraph} moduleGraph module graph
|
|
159
|
-
* @param {
|
|
173
|
+
* @param {Ids} ids imported ids
|
|
160
174
|
* @param {string} additionalMessage extra info included in the error message
|
|
161
175
|
* @returns {WebpackError[] | undefined} errors
|
|
162
176
|
*/
|
|
@@ -273,7 +287,8 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
273
287
|
serialize(context) {
|
|
274
288
|
const { write } = context;
|
|
275
289
|
write(this.sourceOrder);
|
|
276
|
-
write(this.
|
|
290
|
+
write(this.attributes);
|
|
291
|
+
write(this.defer);
|
|
277
292
|
super.serialize(context);
|
|
278
293
|
}
|
|
279
294
|
|
|
@@ -283,7 +298,8 @@ class HarmonyImportDependency extends ModuleDependency {
|
|
|
283
298
|
deserialize(context) {
|
|
284
299
|
const { read } = context;
|
|
285
300
|
this.sourceOrder = read();
|
|
286
|
-
this.
|
|
301
|
+
this.attributes = read();
|
|
302
|
+
this.defer = read();
|
|
287
303
|
super.deserialize(context);
|
|
288
304
|
}
|
|
289
305
|
}
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
const CommentCompilationWarning = require("../CommentCompilationWarning");
|
|
9
9
|
const HotModuleReplacementPlugin = require("../HotModuleReplacementPlugin");
|
|
10
10
|
const WebpackError = require("../WebpackError");
|
|
11
|
-
const {
|
|
11
|
+
const {
|
|
12
|
+
VariableInfo,
|
|
13
|
+
getImportAttributes
|
|
14
|
+
} = require("../javascript/JavascriptParser");
|
|
12
15
|
const InnerGraph = require("../optimize/InnerGraph");
|
|
13
16
|
const ConstDependency = require("./ConstDependency");
|
|
14
17
|
const HarmonyAcceptDependency = require("./HarmonyAcceptDependency");
|
|
@@ -21,31 +24,24 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
|
21
24
|
|
|
22
25
|
/** @typedef {import("estree").Expression} Expression */
|
|
23
26
|
/** @typedef {import("estree").Identifier} Identifier */
|
|
24
|
-
/** @typedef {import("estree").Literal} Literal */
|
|
25
27
|
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
|
26
|
-
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
|
|
27
|
-
/** @typedef {import("estree").Property} Property */
|
|
28
28
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
|
29
29
|
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
|
30
|
-
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
|
31
30
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
|
32
|
-
/** @typedef {import("../javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
|
|
33
31
|
/** @typedef {import("../javascript/JavascriptParser").ExportAllDeclaration} ExportAllDeclaration */
|
|
34
32
|
/** @typedef {import("../javascript/JavascriptParser").ExportNamedDeclaration} ExportNamedDeclaration */
|
|
35
33
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
36
34
|
/** @typedef {import("../javascript/JavascriptParser").ImportDeclaration} ImportDeclaration */
|
|
37
|
-
/** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
|
|
38
35
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
39
|
-
/** @typedef {import("../javascript/JavascriptParser").
|
|
40
|
-
/** @typedef {import("../
|
|
41
|
-
/** @typedef {import("
|
|
42
|
-
/** @typedef {import("./HarmonyImportDependency")} HarmonyImportDependency */
|
|
36
|
+
/** @typedef {import("../javascript/JavascriptParser").Members} Members */
|
|
37
|
+
/** @typedef {import("../javascript/JavascriptParser").MembersOptionals} MembersOptionals */
|
|
38
|
+
/** @typedef {import("./HarmonyImportDependency").Ids} Ids */
|
|
43
39
|
|
|
44
40
|
const harmonySpecifierTag = Symbol("harmony import");
|
|
45
41
|
|
|
46
42
|
/**
|
|
47
43
|
* @typedef {object} HarmonySettings
|
|
48
|
-
* @property {
|
|
44
|
+
* @property {Ids} ids
|
|
49
45
|
* @property {string} source
|
|
50
46
|
* @property {number} sourceOrder
|
|
51
47
|
* @property {string} name
|
|
@@ -81,9 +77,9 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
81
77
|
const { exportPresenceMode } = this;
|
|
82
78
|
|
|
83
79
|
/**
|
|
84
|
-
* @param {
|
|
85
|
-
* @param {
|
|
86
|
-
* @returns {
|
|
80
|
+
* @param {Members} members members
|
|
81
|
+
* @param {MembersOptionals} membersOptionals members Optionals
|
|
82
|
+
* @returns {Ids} a non optional part
|
|
87
83
|
*/
|
|
88
84
|
function getNonOptionalPart(members, membersOptionals) {
|
|
89
85
|
let i = 0;
|
|
@@ -155,14 +151,18 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
155
151
|
const defer = this.deferImport
|
|
156
152
|
? getImportMode(parser, statement).defer
|
|
157
153
|
: false;
|
|
158
|
-
parser.tagVariable(
|
|
154
|
+
parser.tagVariable(
|
|
159
155
|
name,
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
156
|
+
harmonySpecifierTag,
|
|
157
|
+
/** @type {HarmonySettings} */ ({
|
|
158
|
+
name,
|
|
159
|
+
source,
|
|
160
|
+
ids,
|
|
161
|
+
sourceOrder: parser.state.lastHarmonyImportOrder,
|
|
162
|
+
attributes: getImportAttributes(statement),
|
|
163
|
+
defer
|
|
164
|
+
})
|
|
165
|
+
);
|
|
166
166
|
return true;
|
|
167
167
|
}
|
|
168
168
|
);
|
|
@@ -188,10 +188,10 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
188
188
|
return;
|
|
189
189
|
}
|
|
190
190
|
const settings =
|
|
191
|
-
/** @type {
|
|
191
|
+
/** @type {HarmonySettings} */
|
|
192
192
|
(rootInfo.tagInfo.data);
|
|
193
193
|
const members =
|
|
194
|
-
/** @type {(() =>
|
|
194
|
+
/** @type {(() => Members)} */
|
|
195
195
|
(rightPart.getMembers)();
|
|
196
196
|
const dep = new HarmonyEvaluatedImportSpecifierDependency(
|
|
197
197
|
settings.source,
|
|
@@ -211,6 +211,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
|
211
211
|
InnerGraph.onUsage(parser.state, (e) => (dep.usedByExports = e));
|
|
212
212
|
return true;
|
|
213
213
|
});
|
|
214
|
+
parser.hooks.collectDestructuringAssignmentProperties.tap(
|
|
215
|
+
PLUGIN_NAME,
|
|
216
|
+
(expr) => {
|
|
217
|
+
const nameInfo = parser.getNameForExpression(expr);
|
|
218
|
+
if (
|
|
219
|
+
nameInfo &&
|
|
220
|
+
nameInfo.rootInfo instanceof VariableInfo &&
|
|
221
|
+
nameInfo.rootInfo.name &&
|
|
222
|
+
parser.getTagData(nameInfo.rootInfo.name, harmonySpecifierTag)
|
|
223
|
+
) {
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
);
|
|
214
228
|
parser.hooks.expression
|
|
215
229
|
.for(harmonySpecifierTag)
|
|
216
230
|
.tap(PLUGIN_NAME, (expr) => {
|
|
@@ -14,12 +14,8 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
15
15
|
/** @typedef {import("../Module")} Module */
|
|
16
16
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
17
|
-
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
|
18
17
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
|
19
|
-
/** @typedef {import("../WebpackError")} WebpackError */
|
|
20
18
|
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
|
21
|
-
/** @typedef {import("../util/Hash")} Hash */
|
|
22
|
-
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
23
19
|
|
|
24
20
|
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
|
25
21
|
/**
|