webpack 5.90.3 → 5.92.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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/README.md +5 -5
- package/bin/webpack.js +6 -3
- package/lib/APIPlugin.js +14 -6
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +3 -1
- package/lib/Cache.js +8 -2
- package/lib/CacheFacade.js +3 -3
- package/lib/Chunk.js +7 -4
- package/lib/ChunkGraph.js +52 -25
- package/lib/ChunkGroup.js +23 -17
- package/lib/CleanPlugin.js +8 -6
- package/lib/Compilation.js +295 -120
- package/lib/Compiler.js +223 -87
- package/lib/ConcatenationScope.js +3 -3
- package/lib/ConditionalInitFragment.js +4 -5
- package/lib/ContextModule.js +95 -41
- package/lib/ContextModuleFactory.js +4 -2
- package/lib/ContextReplacementPlugin.js +3 -2
- package/lib/DefinePlugin.js +18 -6
- package/lib/Dependency.js +12 -10
- package/lib/DependencyTemplate.js +17 -7
- package/lib/DllModule.js +1 -0
- package/lib/DllReferencePlugin.js +7 -3
- package/lib/EntryOptionPlugin.js +4 -1
- package/lib/EntryPlugin.js +6 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/EvalDevToolModulePlugin.js +11 -0
- package/lib/ExportsInfo.js +23 -8
- package/lib/ExternalModule.js +160 -35
- package/lib/ExternalModuleFactoryPlugin.js +37 -2
- package/lib/FileSystemInfo.js +69 -42
- package/lib/FlagDependencyExportsPlugin.js +21 -7
- package/lib/Generator.js +4 -4
- package/lib/HookWebpackError.js +2 -2
- package/lib/HotModuleReplacementPlugin.js +108 -45
- package/lib/IgnorePlugin.js +4 -1
- package/lib/InitFragment.js +5 -3
- package/lib/LibManifestPlugin.js +17 -9
- package/lib/Module.js +41 -14
- package/lib/ModuleFactory.js +3 -3
- package/lib/ModuleFilenameHelpers.js +30 -17
- package/lib/ModuleGraph.js +60 -31
- package/lib/ModuleGraphConnection.js +2 -1
- package/lib/MultiCompiler.js +62 -9
- package/lib/NodeStuffPlugin.js +14 -3
- package/lib/NormalModule.js +13 -13
- package/lib/NormalModuleFactory.js +18 -9
- package/lib/NormalModuleReplacementPlugin.js +5 -1
- package/lib/Parser.js +1 -1
- package/lib/PlatformPlugin.js +39 -0
- package/lib/ProgressPlugin.js +1 -1
- package/lib/ProvidePlugin.js +3 -1
- package/lib/RawModule.js +2 -1
- package/lib/RecordIdsPlugin.js +4 -4
- package/lib/ResolverFactory.js +6 -4
- package/lib/RuntimeModule.js +4 -4
- package/lib/RuntimePlugin.js +1 -0
- package/lib/RuntimeTemplate.js +124 -52
- package/lib/SourceMapDevToolPlugin.js +4 -1
- package/lib/Stats.js +11 -4
- package/lib/Template.js +5 -5
- package/lib/TemplatedPathPlugin.js +48 -7
- package/lib/Watching.js +67 -60
- package/lib/WebpackError.js +6 -6
- package/lib/WebpackOptionsApply.js +18 -5
- package/lib/asset/AssetGenerator.js +15 -0
- package/lib/asset/RawDataUrlModule.js +3 -1
- package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
- package/lib/buildChunkGraph.js +120 -67
- package/lib/cache/IdleFileCachePlugin.js +8 -3
- package/lib/cache/MemoryCachePlugin.js +1 -1
- package/lib/cache/MemoryWithGcCachePlugin.js +6 -2
- package/lib/cache/PackFileCacheStrategy.js +51 -18
- package/lib/cache/ResolverCachePlugin.js +22 -14
- package/lib/cache/getLazyHashedEtag.js +2 -2
- package/lib/cli.js +5 -5
- package/lib/config/browserslistTargetHandler.js +7 -1
- package/lib/config/defaults.js +108 -34
- package/lib/config/normalization.js +3 -1
- package/lib/config/target.js +18 -11
- package/lib/container/ContainerEntryDependency.js +2 -1
- package/lib/container/ContainerEntryModule.js +4 -2
- package/lib/container/ContainerPlugin.js +14 -10
- package/lib/container/FallbackModule.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +12 -3
- package/lib/css/CssExportsGenerator.js +68 -25
- package/lib/css/CssGenerator.js +34 -6
- package/lib/css/CssLoadingRuntimeModule.js +217 -98
- package/lib/css/CssModulesPlugin.js +238 -107
- package/lib/css/CssParser.js +24 -15
- package/lib/css/walkCssTokens.js +1 -1
- package/lib/debug/ProfilingPlugin.js +28 -3
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +9 -5
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +4 -1
- package/lib/dependencies/CommonJsDependencyHelpers.js +2 -1
- package/lib/dependencies/CommonJsExportRequireDependency.js +33 -18
- package/lib/dependencies/CommonJsExportsDependency.js +13 -5
- package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -15
- package/lib/dependencies/CommonJsImportsParserPlugin.js +1 -2
- package/lib/dependencies/ContextDependencyHelpers.js +49 -29
- package/lib/dependencies/ContextElementDependency.js +8 -1
- package/lib/dependencies/CssExportDependency.js +2 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +71 -9
- package/lib/dependencies/CssUrlDependency.js +10 -7
- package/lib/dependencies/ExportsInfoDependency.js +5 -4
- package/lib/dependencies/ExternalModuleDependency.js +4 -2
- package/lib/dependencies/ExternalModuleInitFragment.js +5 -3
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +43 -23
- package/lib/dependencies/HarmonyExportHeaderDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +73 -32
- package/lib/dependencies/HarmonyExportInitFragment.js +10 -2
- package/lib/dependencies/HarmonyImportDependency.js +28 -12
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +70 -19
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -6
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +47 -35
- package/lib/dependencies/ImportDependency.js +9 -2
- package/lib/dependencies/ImportEagerDependency.js +4 -2
- package/lib/dependencies/ImportMetaContextDependency.js +7 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +25 -14
- package/lib/dependencies/ImportMetaPlugin.js +1 -1
- package/lib/dependencies/ImportParserPlugin.js +15 -5
- package/lib/dependencies/ImportWeakDependency.js +4 -2
- package/lib/dependencies/LoaderDependency.js +2 -1
- package/lib/dependencies/LoaderImportDependency.js +2 -1
- package/lib/dependencies/LoaderPlugin.js +2 -2
- package/lib/dependencies/ModuleDependency.js +4 -5
- package/lib/dependencies/PureExpressionDependency.js +64 -47
- package/lib/dependencies/RequireContextPlugin.js +1 -1
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +26 -14
- package/lib/dependencies/RequireEnsureDependency.js +1 -1
- package/lib/dependencies/URLDependency.js +7 -4
- package/lib/dependencies/WorkerDependency.js +1 -1
- package/lib/dependencies/WorkerPlugin.js +2 -1
- package/lib/dependencies/getFunctionExpression.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +92 -3
- package/lib/hmr/LazyCompilationPlugin.js +2 -2
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -1
- package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/IdHelpers.js +6 -6
- package/lib/ids/NamedChunkIdsPlugin.js +1 -1
- package/lib/ids/NamedModuleIdsPlugin.js +1 -1
- package/lib/ids/SyncModuleIdsPlugin.js +2 -2
- package/lib/index.js +11 -0
- package/lib/javascript/BasicEvaluatedExpression.js +2 -2
- package/lib/javascript/ChunkHelpers.js +2 -2
- package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
- package/lib/javascript/JavascriptGenerator.js +0 -1
- package/lib/javascript/JavascriptModulesPlugin.js +174 -17
- package/lib/javascript/JavascriptParser.js +204 -71
- package/lib/javascript/JavascriptParserHelpers.js +1 -1
- package/lib/javascript/StartupHelpers.js +22 -5
- package/lib/library/AbstractLibraryPlugin.js +2 -2
- package/lib/library/AmdLibraryPlugin.js +2 -2
- package/lib/library/AssignLibraryPlugin.js +3 -3
- package/lib/library/ExportPropertyLibraryPlugin.js +2 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -2
- package/lib/library/ModuleLibraryPlugin.js +2 -2
- package/lib/library/SystemLibraryPlugin.js +2 -2
- package/lib/library/UmdLibraryPlugin.js +33 -12
- package/lib/logging/Logger.js +27 -2
- package/lib/logging/createConsoleLogger.js +13 -9
- package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
- package/lib/node/NodeEnvironmentPlugin.js +14 -8
- package/lib/node/NodeTemplatePlugin.js +1 -1
- package/lib/node/NodeWatchFileSystem.js +37 -26
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -1
- package/lib/node/ReadFileCompileWasmPlugin.js +1 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -1
- package/lib/node/nodeConsole.js +24 -1
- package/lib/optimize/AggressiveMergingPlugin.js +1 -1
- package/lib/optimize/AggressiveSplittingPlugin.js +1 -0
- package/lib/optimize/ConcatenatedModule.js +140 -121
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/InnerGraph.js +8 -3
- package/lib/optimize/InnerGraphPlugin.js +36 -13
- package/lib/optimize/LimitChunkCountPlugin.js +1 -2
- package/lib/optimize/ModuleConcatenationPlugin.js +13 -3
- package/lib/optimize/RealContentHashPlugin.js +3 -3
- package/lib/optimize/RemoveParentModulesPlugin.js +1 -0
- package/lib/optimize/RuntimeChunkPlugin.js +6 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +48 -17
- package/lib/optimize/SplitChunksPlugin.js +10 -10
- package/lib/performance/SizeLimitsPlugin.js +13 -2
- package/lib/rules/ObjectMatcherRulePlugin.js +15 -1
- package/lib/rules/RuleSetCompiler.js +9 -7
- package/lib/runtime/EnsureChunkRuntimeModule.js +2 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -1
- package/lib/runtime/StartupChunkDependenciesPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +4 -4
- package/lib/serialization/FileMiddleware.js +4 -3
- package/lib/serialization/NullPrototypeObjectSerializer.js +2 -2
- package/lib/serialization/ObjectMiddleware.js +8 -5
- package/lib/serialization/PlainObjectSerializer.js +2 -2
- package/lib/serialization/Serializer.js +19 -0
- package/lib/serialization/SerializerMiddleware.js +2 -2
- package/lib/serialization/SingleItemMiddleware.js +2 -2
- package/lib/serialization/types.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +2 -2
- package/lib/sharing/ConsumeSharedPlugin.js +17 -3
- package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -2
- package/lib/sharing/ProvideSharedPlugin.js +13 -6
- package/lib/sharing/resolveMatchedConfigs.js +3 -3
- package/lib/sharing/utils.js +13 -6
- package/lib/stats/DefaultStatsFactoryPlugin.js +20 -20
- package/lib/stats/DefaultStatsPrinterPlugin.js +1 -1
- package/lib/stats/StatsFactory.js +2 -2
- package/lib/stats/StatsPrinter.js +6 -6
- package/lib/util/ArrayQueue.js +14 -21
- package/lib/util/AsyncQueue.js +1 -1
- package/lib/util/Queue.js +8 -2
- package/lib/util/SortableSet.js +16 -4
- package/lib/util/StackedCacheMap.js +26 -0
- package/lib/util/TupleQueue.js +8 -2
- package/lib/util/WeakTupleMap.js +57 -13
- package/lib/util/binarySearchBounds.js +1 -1
- package/lib/util/cleverMerge.js +26 -13
- package/lib/util/comparators.js +37 -15
- package/lib/util/conventions.js +129 -0
- package/lib/util/createHash.js +3 -5
- package/lib/util/deprecation.js +3 -3
- package/lib/util/deterministicGrouping.js +2 -2
- package/lib/util/findGraphRoots.js +1 -1
- package/lib/util/fs.js +383 -69
- package/lib/util/hash/BatchedHash.js +3 -0
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +5 -5
- package/lib/util/mergeScope.js +79 -0
- package/lib/util/runtime.js +2 -17
- package/lib/util/semver.js +3 -0
- package/lib/util/smartGrouping.js +3 -3
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +4 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +1 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +4 -2
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +16 -7
- package/lib/wasm-sync/WebAssemblyGenerator.js +40 -19
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +1 -1
- package/lib/wasm-sync/WebAssemblyParser.js +7 -4
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -1
- package/lib/web/FetchCompileWasmPlugin.js +1 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +3 -2
- package/lib/webpack.js +19 -6
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +2 -1
- package/package.json +40 -39
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +97 -8
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +5 -1
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -1
- package/types.d.ts +1826 -639
@@ -5,18 +5,72 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const createHash = require("../util/createHash");
|
9
|
+
const { makePathsRelative } = require("../util/identifier");
|
8
10
|
const makeSerializable = require("../util/makeSerializable");
|
9
11
|
const NullDependency = require("./NullDependency");
|
10
12
|
|
11
13
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
14
|
+
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
|
15
|
+
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorLocalIdentName} CssGeneratorLocalIdentName */
|
16
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
17
|
+
/** @typedef {import("../CssModule")} CssModule */
|
12
18
|
/** @typedef {import("../Dependency")} Dependency */
|
13
19
|
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
14
20
|
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
15
21
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
22
|
+
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
23
|
+
/** @typedef {import("../css/CssExportsGenerator")} CssExportsGenerator */
|
24
|
+
/** @typedef {import("../css/CssGenerator")} CssGenerator */
|
16
25
|
/** @typedef {import("../css/CssParser").Range} Range */
|
17
26
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
18
27
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
19
28
|
|
29
|
+
/**
|
30
|
+
* @param {string} local css local
|
31
|
+
* @param {CssModule} module module
|
32
|
+
* @param {ChunkGraph} chunkGraph chunk graph
|
33
|
+
* @param {RuntimeTemplate} runtimeTemplate runtime template
|
34
|
+
* @returns {string} local ident
|
35
|
+
*/
|
36
|
+
const getLocalIdent = (local, module, chunkGraph, runtimeTemplate) => {
|
37
|
+
const localIdentName =
|
38
|
+
/** @type {CssGenerator | CssExportsGenerator} */
|
39
|
+
(module.generator).localIdentName;
|
40
|
+
const relativeResourcePath = makePathsRelative(
|
41
|
+
/** @type {string} */ (module.context),
|
42
|
+
module.resourceResolveData.path
|
43
|
+
);
|
44
|
+
const { hashFunction, hashDigest, hashDigestLength, hashSalt, uniqueName } =
|
45
|
+
runtimeTemplate.outputOptions;
|
46
|
+
const hash = createHash(hashFunction);
|
47
|
+
if (hashSalt) {
|
48
|
+
hash.update(hashSalt);
|
49
|
+
}
|
50
|
+
hash.update(relativeResourcePath);
|
51
|
+
if (!/\[local\]/.test(localIdentName)) {
|
52
|
+
hash.update(local);
|
53
|
+
}
|
54
|
+
const localIdentHash = /** @type {string} */ (hash.digest(hashDigest))
|
55
|
+
// Remove all leading digits
|
56
|
+
.replace(/^\d+/, "")
|
57
|
+
// Replace all slashes with underscores (same as in base64url)
|
58
|
+
.replace(/\//g, "_")
|
59
|
+
// Remove everything that is not an alphanumeric or underscore
|
60
|
+
.replace(/[^A-Za-z0-9_]+/g, "_")
|
61
|
+
.slice(0, hashDigestLength);
|
62
|
+
return runtimeTemplate.compilation
|
63
|
+
.getPath(localIdentName, {
|
64
|
+
filename: relativeResourcePath,
|
65
|
+
hash: localIdentHash,
|
66
|
+
contentHash: localIdentHash,
|
67
|
+
chunkGraph,
|
68
|
+
module
|
69
|
+
})
|
70
|
+
.replace(/\[local\]/g, local)
|
71
|
+
.replace(/\[uniqueName\]/g, uniqueName);
|
72
|
+
};
|
73
|
+
|
20
74
|
class CssLocalIdentifierDependency extends NullDependency {
|
21
75
|
/**
|
22
76
|
* @param {string} name name
|
@@ -103,7 +157,14 @@ CssLocalIdentifierDependency.Template = class CssLocalIdentifierDependencyTempla
|
|
103
157
|
apply(
|
104
158
|
dependency,
|
105
159
|
source,
|
106
|
-
{
|
160
|
+
{
|
161
|
+
module,
|
162
|
+
moduleGraph,
|
163
|
+
chunkGraph,
|
164
|
+
runtime,
|
165
|
+
runtimeTemplate,
|
166
|
+
cssExportsData
|
167
|
+
}
|
107
168
|
) {
|
108
169
|
const dep = /** @type {CssLocalIdentifierDependency} */ (dependency);
|
109
170
|
const used = moduleGraph
|
@@ -112,19 +173,20 @@ CssLocalIdentifierDependency.Template = class CssLocalIdentifierDependencyTempla
|
|
112
173
|
|
113
174
|
if (!used) return;
|
114
175
|
|
115
|
-
const
|
116
|
-
const identifier =
|
176
|
+
const localIdent =
|
117
177
|
dep.prefix +
|
118
|
-
(
|
119
|
-
|
120
|
-
|
121
|
-
|
178
|
+
getLocalIdent(
|
179
|
+
used,
|
180
|
+
/** @type {CssModule} */ (module),
|
181
|
+
chunkGraph,
|
182
|
+
runtimeTemplate
|
183
|
+
);
|
122
184
|
source.replace(
|
123
185
|
dep.range[0],
|
124
186
|
dep.range[1] - 1,
|
125
|
-
escapeCssIdentifier(
|
187
|
+
escapeCssIdentifier(localIdent, dep.prefix)
|
126
188
|
);
|
127
|
-
if (used)
|
189
|
+
if (used) cssExportsData.exports.set(used, localIdent);
|
128
190
|
}
|
129
191
|
};
|
130
192
|
|
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const RawDataUrlModule = require("../asset/RawDataUrlModule");
|
8
9
|
const makeSerializable = require("../util/makeSerializable");
|
9
10
|
const memoize = require("../util/memoize");
|
10
11
|
const ModuleDependency = require("./ModuleDependency");
|
@@ -24,7 +25,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
24
25
|
/** @typedef {import("../util/Hash")} Hash */
|
25
26
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
26
27
|
|
27
|
-
const
|
28
|
+
const getIgnoredRawDataUrlModule = memoize(() => {
|
29
|
+
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
30
|
+
});
|
28
31
|
|
29
32
|
class CssUrlDependency extends ModuleDependency {
|
30
33
|
/**
|
@@ -51,8 +54,7 @@ class CssUrlDependency extends ModuleDependency {
|
|
51
54
|
* @returns {Module | null} a module
|
52
55
|
*/
|
53
56
|
createIgnoredModule(context) {
|
54
|
-
|
55
|
-
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
57
|
+
return getIgnoredRawDataUrlModule();
|
56
58
|
}
|
57
59
|
|
58
60
|
/**
|
@@ -124,6 +126,7 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
|
124
126
|
{ moduleGraph, runtimeTemplate, codeGenerationResults }
|
125
127
|
) {
|
126
128
|
const dep = /** @type {CssUrlDependency} */ (dependency);
|
129
|
+
const module = /** @type {Module} */ (moduleGraph.getModule(dep));
|
127
130
|
|
128
131
|
/** @type {string | undefined} */
|
129
132
|
let newValue;
|
@@ -132,8 +135,7 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
|
132
135
|
case "string":
|
133
136
|
newValue = cssEscapeString(
|
134
137
|
runtimeTemplate.assetUrl({
|
135
|
-
|
136
|
-
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
138
|
+
module,
|
137
139
|
codeGenerationResults
|
138
140
|
})
|
139
141
|
);
|
@@ -141,8 +143,7 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
|
141
143
|
case "url":
|
142
144
|
newValue = `url(${cssEscapeString(
|
143
145
|
runtimeTemplate.assetUrl({
|
144
|
-
|
145
|
-
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
146
|
+
module,
|
146
147
|
codeGenerationResults
|
147
148
|
})
|
148
149
|
)})`;
|
@@ -159,4 +160,6 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
|
159
160
|
|
160
161
|
makeSerializable(CssUrlDependency, "webpack/lib/dependencies/CssUrlDependency");
|
161
162
|
|
163
|
+
CssUrlDependency.PUBLIC_PATH_AUTO = "__WEBPACK_CSS_PUBLIC_PATH_AUTO__";
|
164
|
+
|
162
165
|
module.exports = CssUrlDependency;
|
@@ -25,13 +25,13 @@ const NullDependency = require("./NullDependency");
|
|
25
25
|
/**
|
26
26
|
* @param {ModuleGraph} moduleGraph the module graph
|
27
27
|
* @param {Module} module the module
|
28
|
-
* @param {string[] | null}
|
28
|
+
* @param {string[] | null} _exportName name of the export if any
|
29
29
|
* @param {string | null} property name of the requested property
|
30
30
|
* @param {RuntimeSpec} runtime for which runtime
|
31
31
|
* @returns {any} value of the property
|
32
32
|
*/
|
33
|
-
const getProperty = (moduleGraph, module,
|
34
|
-
if (!
|
33
|
+
const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
|
34
|
+
if (!_exportName) {
|
35
35
|
switch (property) {
|
36
36
|
case "usedExports": {
|
37
37
|
const usedExports = moduleGraph
|
@@ -48,10 +48,11 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
|
|
48
48
|
}
|
49
49
|
}
|
50
50
|
}
|
51
|
+
const exportName = /** @type {string[]} */ (_exportName);
|
51
52
|
switch (property) {
|
52
53
|
case "canMangle": {
|
53
54
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
54
|
-
const exportInfo = exportsInfo.
|
55
|
+
const exportInfo = exportsInfo.getReadOnlyExportInfoRecursive(exportName);
|
55
56
|
if (exportInfo) return exportInfo.canMangle;
|
56
57
|
return exportsInfo.otherExportsInfo.canMangle;
|
57
58
|
}
|
@@ -92,11 +92,13 @@ ExternalModuleDependency.Template = class ExternalModuleDependencyTemplate exten
|
|
92
92
|
apply(dependency, source, templateContext) {
|
93
93
|
super.apply(dependency, source, templateContext);
|
94
94
|
const dep = /** @type {ExternalModuleDependency} */ (dependency);
|
95
|
-
const { chunkInitFragments } = templateContext;
|
95
|
+
const { chunkInitFragments, runtimeTemplate } = templateContext;
|
96
96
|
|
97
97
|
chunkInitFragments.push(
|
98
98
|
new ExternalModuleInitFragment(
|
99
|
-
|
99
|
+
`${runtimeTemplate.supportNodePrefixForCoreModules() ? "node:" : ""}${
|
100
|
+
dep.importedModule
|
101
|
+
}`,
|
100
102
|
dep.specifiers,
|
101
103
|
dep.default
|
102
104
|
)
|
@@ -20,7 +20,7 @@ const makeSerializable = require("../util/makeSerializable");
|
|
20
20
|
class ExternalModuleInitFragment extends InitFragment {
|
21
21
|
/**
|
22
22
|
* @param {string} importedModule imported module
|
23
|
-
* @param {Array<{ name: string, value?: string }
|
23
|
+
* @param {Array<{ name: string, value?: string }> | ImportSpecifiers} specifiers import specifiers
|
24
24
|
* @param {string=} defaultImport default import
|
25
25
|
*/
|
26
26
|
constructor(importedModule, specifiers, defaultImport) {
|
@@ -56,7 +56,9 @@ class ExternalModuleInitFragment extends InitFragment {
|
|
56
56
|
const newSpecifiersMap = new Map(this.specifiers);
|
57
57
|
for (const [name, specifiers] of other.specifiers) {
|
58
58
|
if (newSpecifiersMap.has(name)) {
|
59
|
-
const currentSpecifiers =
|
59
|
+
const currentSpecifiers =
|
60
|
+
/** @type {Set<string>} */
|
61
|
+
(newSpecifiersMap.get(name));
|
60
62
|
for (const spec of specifiers) currentSpecifiers.add(spec);
|
61
63
|
} else {
|
62
64
|
newSpecifiersMap.set(name, specifiers);
|
@@ -71,7 +73,7 @@ class ExternalModuleInitFragment extends InitFragment {
|
|
71
73
|
|
72
74
|
/**
|
73
75
|
* @param {GenerateContext} context context
|
74
|
-
* @returns {string | Source} the source code that will be included as initialization code
|
76
|
+
* @returns {string | Source | undefined} the source code that will be included as initialization code
|
75
77
|
*/
|
76
78
|
getContent({ runtimeRequirements }) {
|
77
79
|
const namedImports = [];
|
@@ -14,7 +14,7 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
15
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
16
16
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
17
|
-
/** @typedef {import("../javascript/JavascriptParser").
|
17
|
+
/** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
|
18
18
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
19
19
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
20
20
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
@@ -33,11 +33,11 @@ class HarmonyEvaluatedImportSpecifierDependency extends HarmonyImportSpecifierDe
|
|
33
33
|
* @param {TODO} ids ids
|
34
34
|
* @param {TODO} name name
|
35
35
|
* @param {Range} range location in source code
|
36
|
-
* @param {
|
36
|
+
* @param {ImportAttributes} attributes import assertions
|
37
37
|
* @param {string} operator operator
|
38
38
|
*/
|
39
|
-
constructor(request, sourceOrder, ids, name, range,
|
40
|
-
super(request, sourceOrder, ids, name, range, false,
|
39
|
+
constructor(request, sourceOrder, ids, name, range, attributes, operator) {
|
40
|
+
super(request, sourceOrder, ids, name, range, false, attributes, []);
|
41
41
|
this.operator = operator;
|
42
42
|
}
|
43
43
|
|
@@ -14,11 +14,14 @@ const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDepend
|
|
14
14
|
const { ExportPresenceModes } = require("./HarmonyImportDependency");
|
15
15
|
const {
|
16
16
|
harmonySpecifierTag,
|
17
|
-
|
17
|
+
getAttributes
|
18
18
|
} = require("./HarmonyImportDependencyParserPlugin");
|
19
19
|
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
20
20
|
|
21
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
21
22
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
23
|
+
/** @typedef {import("../javascript/JavascriptParser").FunctionDeclaration} FunctionDeclaration */
|
24
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
22
25
|
|
23
26
|
const { HarmonyStarExportsList } = HarmonyExportImportedSpecifierDependency;
|
24
27
|
|
@@ -37,16 +40,24 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
37
40
|
: ExportPresenceModes.AUTO;
|
38
41
|
}
|
39
42
|
|
43
|
+
/**
|
44
|
+
* @param {JavascriptParser} parser the parser
|
45
|
+
* @returns {void}
|
46
|
+
*/
|
40
47
|
apply(parser) {
|
41
48
|
const { exportPresenceMode } = this;
|
42
49
|
parser.hooks.export.tap(
|
43
50
|
"HarmonyExportDependencyParserPlugin",
|
44
51
|
statement => {
|
45
52
|
const dep = new HarmonyExportHeaderDependency(
|
46
|
-
|
47
|
-
|
53
|
+
/** @type {Range | false} */ (
|
54
|
+
statement.declaration && statement.declaration.range
|
55
|
+
),
|
56
|
+
/** @type {Range} */ (statement.range)
|
57
|
+
);
|
58
|
+
dep.loc = Object.create(
|
59
|
+
/** @type {DependencyLocation} */ (statement.loc)
|
48
60
|
);
|
49
|
-
dep.loc = Object.create(statement.loc);
|
50
61
|
dep.loc.index = -1;
|
51
62
|
parser.state.module.addPresentationalDependency(dep);
|
52
63
|
return true;
|
@@ -57,16 +68,21 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
57
68
|
(statement, source) => {
|
58
69
|
parser.state.lastHarmonyImportOrder =
|
59
70
|
(parser.state.lastHarmonyImportOrder || 0) + 1;
|
60
|
-
const clearDep = new ConstDependency(
|
61
|
-
|
71
|
+
const clearDep = new ConstDependency(
|
72
|
+
"",
|
73
|
+
/** @type {Range} */ (statement.range)
|
74
|
+
);
|
75
|
+
clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
|
62
76
|
clearDep.loc.index = -1;
|
63
77
|
parser.state.module.addPresentationalDependency(clearDep);
|
64
78
|
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
65
|
-
source,
|
79
|
+
/** @type {string} */ (source),
|
66
80
|
parser.state.lastHarmonyImportOrder,
|
67
|
-
|
81
|
+
getAttributes(statement)
|
82
|
+
);
|
83
|
+
sideEffectDep.loc = Object.create(
|
84
|
+
/** @type {DependencyLocation} */ (statement.loc)
|
68
85
|
);
|
69
|
-
sideEffectDep.loc = Object.create(statement.loc);
|
70
86
|
sideEffectDep.loc.index = -1;
|
71
87
|
parser.state.current.addDependency(sideEffectDep);
|
72
88
|
return true;
|
@@ -76,13 +92,12 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
76
92
|
"HarmonyExportDependencyParserPlugin",
|
77
93
|
(statement, expr) => {
|
78
94
|
const isFunctionDeclaration = expr.type === "FunctionDeclaration";
|
79
|
-
const
|
80
|
-
|
81
|
-
|
82
|
-
]);
|
95
|
+
const exprRange = /** @type {Range} */ (expr.range);
|
96
|
+
const statementRange = /** @type {Range} */ (statement.range);
|
97
|
+
const comments = parser.getComments([statementRange[0], exprRange[0]]);
|
83
98
|
const dep = new HarmonyExportExpressionDependency(
|
84
|
-
|
85
|
-
|
99
|
+
exprRange,
|
100
|
+
statementRange,
|
86
101
|
comments
|
87
102
|
.map(c => {
|
88
103
|
switch (c.type) {
|
@@ -98,12 +113,11 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
98
113
|
? expr.id.name
|
99
114
|
: isFunctionDeclaration
|
100
115
|
? {
|
101
|
-
id: expr.id ? expr.id.name : undefined,
|
102
116
|
range: [
|
103
|
-
|
117
|
+
exprRange[0],
|
104
118
|
expr.params.length > 0
|
105
|
-
? expr.params[0].range[0]
|
106
|
-
: expr.body.range[0]
|
119
|
+
? /** @type {Range} */ (expr.params[0].range)[0]
|
120
|
+
: /** @type {Range} */ (expr.body.range)[0]
|
107
121
|
],
|
108
122
|
prefix: `${expr.async ? "async " : ""}function${
|
109
123
|
expr.generator ? "*" : ""
|
@@ -112,7 +126,9 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
112
126
|
}
|
113
127
|
: undefined
|
114
128
|
);
|
115
|
-
dep.loc = Object.create(
|
129
|
+
dep.loc = Object.create(
|
130
|
+
/** @type {DependencyLocation} */ (statement.loc)
|
131
|
+
);
|
116
132
|
dep.loc.index = -1;
|
117
133
|
parser.state.current.addDependency(dep);
|
118
134
|
InnerGraph.addVariableUsage(
|
@@ -149,7 +165,9 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
149
165
|
} else {
|
150
166
|
dep = new HarmonyExportSpecifierDependency(id, name);
|
151
167
|
}
|
152
|
-
dep.loc = Object.create(
|
168
|
+
dep.loc = Object.create(
|
169
|
+
/** @type {DependencyLocation} */ (statement.loc)
|
170
|
+
);
|
153
171
|
dep.loc.index = idx;
|
154
172
|
parser.state.current.addDependency(dep);
|
155
173
|
return true;
|
@@ -168,7 +186,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
168
186
|
parser.state.harmonyStarExports || new HarmonyStarExportsList();
|
169
187
|
}
|
170
188
|
const dep = new HarmonyExportImportedSpecifierDependency(
|
171
|
-
source,
|
189
|
+
/** @type {string} */ (source),
|
172
190
|
parser.state.lastHarmonyImportOrder,
|
173
191
|
id ? [id] : [],
|
174
192
|
name,
|
@@ -180,7 +198,9 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
180
198
|
if (harmonyStarExports) {
|
181
199
|
harmonyStarExports.push(dep);
|
182
200
|
}
|
183
|
-
dep.loc = Object.create(
|
201
|
+
dep.loc = Object.create(
|
202
|
+
/** @type {DependencyLocation} */ (statement.loc)
|
203
|
+
);
|
184
204
|
dep.loc.index = idx;
|
185
205
|
parser.state.current.addDependency(dep);
|
186
206
|
return true;
|
@@ -17,7 +17,7 @@ const NullDependency = require("./NullDependency");
|
|
17
17
|
|
18
18
|
class HarmonyExportHeaderDependency extends NullDependency {
|
19
19
|
/**
|
20
|
-
* @param {Range} range range
|
20
|
+
* @param {Range | false} range range
|
21
21
|
* @param {Range} rangeStatement range statement
|
22
22
|
*/
|
23
23
|
constructor(range, rangeStatement) {
|