webpack 5.59.0 → 5.76.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 +22 -24
- package/bin/webpack.js +0 -0
- package/hot/dev-server.js +17 -4
- package/hot/lazy-compilation-node.js +3 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +33 -0
- package/lib/BannerPlugin.js +13 -5
- package/lib/Cache.js +1 -1
- package/lib/CacheFacade.js +4 -11
- package/lib/Chunk.js +6 -3
- package/lib/ChunkGraph.js +94 -8
- package/lib/ChunkGroup.js +1 -1
- package/lib/CleanPlugin.js +81 -20
- package/lib/Compilation.js +188 -93
- package/lib/Compiler.js +87 -18
- package/lib/ConstPlugin.js +2 -2
- package/lib/ContextModule.js +142 -51
- package/lib/ContextModuleFactory.js +65 -25
- package/lib/DelegatedModule.js +1 -1
- package/lib/DelegatedModuleFactoryPlugin.js +1 -1
- package/lib/Dependency.js +17 -0
- package/lib/DependencyTemplate.js +9 -0
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllModule.js +1 -1
- package/lib/DllReferencePlugin.js +1 -1
- package/lib/EntryOptionPlugin.js +2 -0
- package/lib/ErrorHelpers.js +2 -2
- package/lib/EvalDevToolModulePlugin.js +16 -1
- package/lib/EvalSourceMapDevToolPlugin.js +25 -4
- package/lib/ExportsInfo.js +5 -5
- package/lib/ExternalModule.js +94 -54
- package/lib/ExternalModuleFactoryPlugin.js +5 -5
- package/lib/FileSystemInfo.js +124 -58
- package/lib/Generator.js +3 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/HotModuleReplacementPlugin.js +3 -1
- package/lib/LoaderOptionsPlugin.js +1 -1
- package/lib/Module.js +28 -4
- package/lib/ModuleFilenameHelpers.js +8 -4
- package/lib/ModuleHashingError.js +29 -0
- package/lib/MultiCompiler.js +1 -1
- package/lib/MultiWatching.js +1 -1
- package/lib/NodeStuffPlugin.js +13 -3
- package/lib/NormalModule.js +51 -33
- package/lib/NormalModuleFactory.js +42 -37
- package/lib/ProgressPlugin.js +4 -5
- package/lib/RawModule.js +1 -1
- package/lib/RuntimeGlobals.js +29 -1
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +84 -1
- package/lib/RuntimeTemplate.js +114 -2
- package/lib/Template.js +3 -2
- package/lib/TemplatedPathPlugin.js +48 -23
- package/lib/WatchIgnorePlugin.js +19 -7
- package/lib/Watching.js +33 -19
- package/lib/WebpackOptionsApply.js +79 -11
- package/lib/asset/AssetGenerator.js +228 -71
- package/lib/asset/AssetModulesPlugin.js +3 -0
- package/lib/asset/AssetParser.js +1 -0
- package/lib/asset/AssetSourceGenerator.js +31 -6
- package/lib/asset/AssetSourceParser.js +1 -0
- package/lib/asset/RawDataUrlModule.js +148 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/buildChunkGraph.js +38 -7
- package/lib/cache/PackFileCacheStrategy.js +15 -8
- package/lib/cache/ResolverCachePlugin.js +90 -29
- package/lib/cli.js +44 -3
- package/lib/config/browserslistTargetHandler.js +41 -6
- package/lib/config/defaults.js +123 -19
- package/lib/config/normalization.js +10 -2
- package/lib/config/target.js +10 -0
- package/lib/container/ContainerEntryModule.js +8 -5
- package/lib/container/FallbackModule.js +4 -4
- package/lib/container/ModuleFederationPlugin.js +2 -0
- package/lib/container/RemoteModule.js +4 -2
- package/lib/container/RemoteRuntimeModule.js +8 -7
- package/lib/css/CssExportsGenerator.js +139 -0
- package/lib/css/CssGenerator.js +109 -0
- package/lib/css/CssLoadingRuntimeModule.js +442 -0
- package/lib/css/CssModulesPlugin.js +462 -0
- package/lib/css/CssParser.js +618 -0
- package/lib/css/walkCssTokens.js +659 -0
- package/lib/debug/ProfilingPlugin.js +24 -21
- package/lib/dependencies/AMDRequireDependency.js +6 -6
- package/lib/dependencies/CommonJsExportsParserPlugin.js +1 -2
- package/lib/dependencies/CommonJsFullRequireDependency.js +5 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +344 -61
- package/lib/dependencies/CommonJsRequireContextDependency.js +6 -2
- package/lib/dependencies/CommonJsRequireDependency.js +2 -1
- package/lib/dependencies/ContextDependency.js +16 -2
- package/lib/dependencies/ContextDependencyHelpers.js +21 -8
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
- package/lib/dependencies/ContextElementDependency.js +25 -3
- package/lib/dependencies/CreateScriptUrlDependency.js +12 -0
- package/lib/dependencies/CssExportDependency.js +85 -0
- package/lib/dependencies/CssImportDependency.js +75 -0
- package/lib/dependencies/CssLocalIdentifierDependency.js +119 -0
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +101 -0
- package/lib/dependencies/CssUrlDependency.js +132 -0
- package/lib/dependencies/ExportsInfoDependency.js +6 -0
- package/lib/dependencies/HarmonyAcceptImportDependency.js +5 -3
- package/lib/dependencies/HarmonyCompatibilityDependency.js +5 -5
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +127 -0
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +12 -3
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +25 -17
- package/lib/dependencies/HarmonyExportInitFragment.js +4 -1
- package/lib/dependencies/HarmonyImportDependency.js +23 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +142 -45
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -22
- package/lib/dependencies/HarmonyModulesPlugin.js +10 -0
- package/lib/dependencies/ImportContextDependency.js +0 -2
- package/lib/dependencies/ImportMetaContextDependency.js +35 -0
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +252 -0
- package/lib/dependencies/ImportMetaContextPlugin.js +59 -0
- package/lib/dependencies/ImportMetaPlugin.js +22 -3
- package/lib/dependencies/ImportParserPlugin.js +35 -29
- package/lib/dependencies/JsonExportsDependency.js +17 -21
- package/lib/dependencies/LoaderDependency.js +13 -0
- package/lib/dependencies/LoaderImportDependency.js +13 -0
- package/lib/dependencies/LoaderPlugin.js +4 -2
- package/lib/dependencies/ModuleDependency.js +11 -1
- package/lib/dependencies/ProvidedDependency.js +31 -8
- package/lib/dependencies/RequireContextDependency.js +0 -16
- package/lib/dependencies/RequireEnsureDependency.js +2 -2
- package/lib/dependencies/RequireResolveContextDependency.js +2 -2
- package/lib/dependencies/RequireResolveDependency.js +2 -1
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/dependencies/URLPlugin.js +22 -1
- package/lib/dependencies/WorkerPlugin.js +2 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +74 -49
- package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +25 -9
- package/lib/hmr/HotModuleReplacement.runtime.js +29 -14
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +4 -3
- package/lib/hmr/LazyCompilationPlugin.js +54 -26
- package/lib/hmr/lazyCompilationBackend.js +51 -12
- package/lib/ids/DeterministicModuleIdsPlugin.js +55 -35
- package/lib/ids/HashedModuleIdsPlugin.js +11 -14
- package/lib/ids/IdHelpers.js +26 -12
- package/lib/ids/NamedModuleIdsPlugin.js +6 -9
- package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
- package/lib/ids/OccurrenceModuleIdsPlugin.js +13 -10
- package/lib/ids/SyncModuleIdsPlugin.js +140 -0
- package/lib/index.js +20 -0
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +2 -2
- package/lib/javascript/BasicEvaluatedExpression.js +5 -2
- package/lib/javascript/ChunkHelpers.js +33 -0
- package/lib/javascript/JavascriptGenerator.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +27 -2
- package/lib/javascript/JavascriptParser.js +143 -73
- package/lib/javascript/StartupHelpers.js +7 -30
- package/lib/json/JsonData.js +8 -0
- package/lib/json/JsonParser.js +4 -6
- package/lib/library/AssignLibraryPlugin.js +39 -15
- package/lib/library/EnableLibraryPlugin.js +11 -0
- package/lib/library/UmdLibraryPlugin.js +5 -3
- package/lib/node/NodeTargetPlugin.js +3 -0
- package/lib/node/NodeWatchFileSystem.js +85 -31
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +23 -8
- package/lib/node/RequireChunkLoadingRuntimeModule.js +24 -9
- package/lib/optimize/ConcatenatedModule.js +62 -26
- package/lib/optimize/ModuleConcatenationPlugin.js +26 -4
- package/lib/optimize/RealContentHashPlugin.js +45 -15
- package/lib/optimize/SplitChunksPlugin.js +8 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +50 -66
- package/lib/runtime/BaseUriRuntimeModule.js +31 -0
- package/lib/runtime/CreateScriptRuntimeModule.js +36 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +9 -34
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +76 -0
- package/lib/runtime/LoadScriptRuntimeModule.js +11 -9
- package/lib/runtime/NonceRuntimeModule.js +24 -0
- package/lib/schemes/HttpUriPlugin.js +77 -14
- package/lib/serialization/FileMiddleware.js +44 -9
- package/lib/sharing/ConsumeSharedModule.js +8 -2
- package/lib/sharing/ConsumeSharedRuntimeModule.js +26 -5
- package/lib/sharing/ProvideSharedModule.js +4 -2
- package/lib/sharing/ProvideSharedPlugin.js +1 -2
- package/lib/sharing/ShareRuntimeModule.js +1 -1
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +113 -68
- package/lib/stats/DefaultStatsPrinterPlugin.js +90 -25
- package/lib/util/ArrayHelpers.js +30 -0
- package/lib/util/AsyncQueue.js +1 -1
- package/lib/util/compileBooleanMatcher.js +1 -1
- package/lib/util/create-schema-validation.js +9 -2
- package/lib/util/createHash.js +12 -0
- package/lib/util/deprecation.js +10 -2
- package/lib/util/deterministicGrouping.js +1 -1
- package/lib/util/extractUrlAndGlobal.js +3 -0
- package/lib/util/fs.js +11 -0
- package/lib/util/hash/BatchedHash.js +7 -4
- package/lib/util/hash/md4.js +20 -0
- package/lib/util/hash/wasm-hash.js +163 -0
- package/lib/util/hash/xxhash64.js +5 -139
- package/lib/util/identifier.js +65 -44
- package/lib/util/internalSerializables.js +15 -0
- package/lib/util/nonNumericOnlyHash.js +22 -0
- package/lib/util/semver.js +17 -10
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +9 -3
- package/lib/wasm-sync/WebAssemblyParser.js +1 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +31 -18
- package/lib/webpack.js +10 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -11
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +33 -22
- package/module.d.ts +215 -0
- package/package.json +28 -32
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +321 -30
- package/schemas/plugins/BannerPlugin.check.js +1 -1
- package/schemas/plugins/BannerPlugin.json +4 -0
- package/schemas/plugins/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/ProgressPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetParserOptions.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/ContainerPlugin.json +2 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +3 -1
- package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
- package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
- package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
- package/schemas/plugins/css/CssParserOptions.check.js +6 -0
- package/schemas/plugins/css/CssParserOptions.json +3 -0
- package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
- package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
- package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
- package/types.d.ts +869 -296
@@ -28,8 +28,8 @@ const splitContextFromPrefix = prefix => {
|
|
28
28
|
const idx = prefix.lastIndexOf("/");
|
29
29
|
let context = ".";
|
30
30
|
if (idx >= 0) {
|
31
|
-
context = prefix.
|
32
|
-
prefix = `.${prefix.
|
31
|
+
context = prefix.slice(0, idx);
|
32
|
+
prefix = `.${prefix.slice(idx)}`;
|
33
33
|
}
|
34
34
|
return {
|
35
35
|
context,
|
@@ -37,9 +37,9 @@ const splitContextFromPrefix = prefix => {
|
|
37
37
|
};
|
38
38
|
};
|
39
39
|
|
40
|
-
/** @typedef {Partial<Omit<ContextDependencyOptions, "resource"
|
40
|
+
/** @typedef {Partial<Omit<ContextDependencyOptions, "resource">>} PartialContextDependencyOptions */
|
41
41
|
|
42
|
-
/** @typedef {{ new(options: ContextDependencyOptions, range: [number, number], valueRange: [number, number]): ContextDependency }} ContextDependencyConstructor */
|
42
|
+
/** @typedef {{ new(options: ContextDependencyOptions, range: [number, number], valueRange: [number, number], ...args: any[]): ContextDependency }} ContextDependencyConstructor */
|
43
43
|
|
44
44
|
/**
|
45
45
|
* @param {ContextDependencyConstructor} Dep the Dependency class
|
@@ -49,9 +49,19 @@ const splitContextFromPrefix = prefix => {
|
|
49
49
|
* @param {Pick<JavascriptParserOptions, `${"expr"|"wrapped"}Context${"Critical"|"Recursive"|"RegExp"}` | "exprContextRequest">} options options for context creation
|
50
50
|
* @param {PartialContextDependencyOptions} contextOptions options for the ContextModule
|
51
51
|
* @param {JavascriptParser} parser the parser
|
52
|
+
* @param {...any} depArgs depArgs
|
52
53
|
* @returns {ContextDependency} the created Dependency
|
53
54
|
*/
|
54
|
-
exports.create = (
|
55
|
+
exports.create = (
|
56
|
+
Dep,
|
57
|
+
range,
|
58
|
+
param,
|
59
|
+
expr,
|
60
|
+
options,
|
61
|
+
contextOptions,
|
62
|
+
parser,
|
63
|
+
...depArgs
|
64
|
+
) => {
|
55
65
|
if (param.isTemplateString()) {
|
56
66
|
let prefixRaw = param.quasis[0].string;
|
57
67
|
let postfixRaw =
|
@@ -97,7 +107,8 @@ exports.create = (Dep, range, param, expr, options, contextOptions, parser) => {
|
|
97
107
|
...contextOptions
|
98
108
|
},
|
99
109
|
range,
|
100
|
-
valueRange
|
110
|
+
valueRange,
|
111
|
+
...depArgs
|
101
112
|
);
|
102
113
|
dep.loc = expr.loc;
|
103
114
|
const replaces = [];
|
@@ -180,7 +191,8 @@ exports.create = (Dep, range, param, expr, options, contextOptions, parser) => {
|
|
180
191
|
...contextOptions
|
181
192
|
},
|
182
193
|
range,
|
183
|
-
valueRange
|
194
|
+
valueRange,
|
195
|
+
...depArgs
|
184
196
|
);
|
185
197
|
dep.loc = expr.loc;
|
186
198
|
const replaces = [];
|
@@ -218,7 +230,8 @@ exports.create = (Dep, range, param, expr, options, contextOptions, parser) => {
|
|
218
230
|
...contextOptions
|
219
231
|
},
|
220
232
|
range,
|
221
|
-
param.range
|
233
|
+
param.range,
|
234
|
+
...depArgs
|
222
235
|
);
|
223
236
|
dep.loc = expr.loc;
|
224
237
|
dep.critical =
|
@@ -24,13 +24,16 @@ class ContextDependencyTemplateAsRequireCall extends ContextDependency.Template
|
|
24
24
|
{ runtimeTemplate, moduleGraph, chunkGraph, runtimeRequirements }
|
25
25
|
) {
|
26
26
|
const dep = /** @type {ContextDependency} */ (dependency);
|
27
|
-
|
27
|
+
let moduleExports = runtimeTemplate.moduleExports({
|
28
28
|
module: moduleGraph.getModule(dep),
|
29
29
|
chunkGraph,
|
30
30
|
request: dep.request,
|
31
31
|
runtimeRequirements
|
32
32
|
});
|
33
33
|
|
34
|
+
if (dep.inShorthand) {
|
35
|
+
moduleExports = `${dep.inShorthand}: ${moduleExports}`;
|
36
|
+
}
|
34
37
|
if (moduleGraph.getModule(dep)) {
|
35
38
|
if (dep.valueRange) {
|
36
39
|
if (Array.isArray(dep.replaces)) {
|
@@ -14,11 +14,27 @@ const ModuleDependency = require("./ModuleDependency");
|
|
14
14
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
15
15
|
|
16
16
|
class ContextElementDependency extends ModuleDependency {
|
17
|
-
|
17
|
+
/**
|
18
|
+
* @param {string} request request
|
19
|
+
* @param {string|undefined} userRequest user request
|
20
|
+
* @param {string} typePrefix type prefix
|
21
|
+
* @param {string} category category
|
22
|
+
* @param {string[][]=} referencedExports referenced exports
|
23
|
+
* @param {string=} context context
|
24
|
+
*/
|
25
|
+
constructor(
|
26
|
+
request,
|
27
|
+
userRequest,
|
28
|
+
typePrefix,
|
29
|
+
category,
|
30
|
+
referencedExports,
|
31
|
+
context
|
32
|
+
) {
|
18
33
|
super(request);
|
19
34
|
this.referencedExports = referencedExports;
|
20
35
|
this._typePrefix = typePrefix;
|
21
36
|
this._category = category;
|
37
|
+
this._context = context || undefined;
|
22
38
|
|
23
39
|
if (userRequest) {
|
24
40
|
this.userRequest = userRequest;
|
@@ -53,12 +69,18 @@ class ContextElementDependency extends ModuleDependency {
|
|
53
69
|
}
|
54
70
|
|
55
71
|
serialize(context) {
|
56
|
-
context
|
72
|
+
const { write } = context;
|
73
|
+
write(this._typePrefix);
|
74
|
+
write(this._category);
|
75
|
+
write(this.referencedExports);
|
57
76
|
super.serialize(context);
|
58
77
|
}
|
59
78
|
|
60
79
|
deserialize(context) {
|
61
|
-
|
80
|
+
const { read } = context;
|
81
|
+
this._typePrefix = read();
|
82
|
+
this._category = read();
|
83
|
+
this.referencedExports = read();
|
62
84
|
super.deserialize(context);
|
63
85
|
}
|
64
86
|
}
|
@@ -25,6 +25,18 @@ class CreateScriptUrlDependency extends NullDependency {
|
|
25
25
|
get type() {
|
26
26
|
return "create script url";
|
27
27
|
}
|
28
|
+
|
29
|
+
serialize(context) {
|
30
|
+
const { write } = context;
|
31
|
+
write(this.range);
|
32
|
+
super.serialize(context);
|
33
|
+
}
|
34
|
+
|
35
|
+
deserialize(context) {
|
36
|
+
const { read } = context;
|
37
|
+
this.range = read();
|
38
|
+
super.deserialize(context);
|
39
|
+
}
|
28
40
|
}
|
29
41
|
|
30
42
|
CreateScriptUrlDependency.Template = class CreateScriptUrlDependencyTemplate extends (
|
@@ -0,0 +1,85 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Ivan Kopeykin @vankop
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
9
|
+
const NullDependency = require("./NullDependency");
|
10
|
+
|
11
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
12
|
+
/** @typedef {import("../Dependency")} Dependency */
|
13
|
+
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
14
|
+
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
|
+
|
17
|
+
class CssExportDependency extends NullDependency {
|
18
|
+
/**
|
19
|
+
* @param {string} name name
|
20
|
+
* @param {string} value value
|
21
|
+
*/
|
22
|
+
constructor(name, value) {
|
23
|
+
super();
|
24
|
+
this.name = name;
|
25
|
+
this.value = value;
|
26
|
+
}
|
27
|
+
|
28
|
+
get type() {
|
29
|
+
return "css :export";
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* Returns the exported names
|
34
|
+
* @param {ModuleGraph} moduleGraph module graph
|
35
|
+
* @returns {ExportsSpec | undefined} export names
|
36
|
+
*/
|
37
|
+
getExports(moduleGraph) {
|
38
|
+
const name = this.name;
|
39
|
+
return {
|
40
|
+
exports: [
|
41
|
+
{
|
42
|
+
name,
|
43
|
+
canMangle: true
|
44
|
+
}
|
45
|
+
],
|
46
|
+
dependencies: undefined
|
47
|
+
};
|
48
|
+
}
|
49
|
+
|
50
|
+
serialize(context) {
|
51
|
+
const { write } = context;
|
52
|
+
write(this.name);
|
53
|
+
write(this.value);
|
54
|
+
super.serialize(context);
|
55
|
+
}
|
56
|
+
|
57
|
+
deserialize(context) {
|
58
|
+
const { read } = context;
|
59
|
+
this.name = read();
|
60
|
+
this.value = read();
|
61
|
+
super.deserialize(context);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
CssExportDependency.Template = class CssExportDependencyTemplate extends (
|
66
|
+
NullDependency.Template
|
67
|
+
) {
|
68
|
+
/**
|
69
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
70
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
71
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
72
|
+
* @returns {void}
|
73
|
+
*/
|
74
|
+
apply(dependency, source, { cssExports }) {
|
75
|
+
const dep = /** @type {CssExportDependency} */ (dependency);
|
76
|
+
cssExports.set(dep.name, dep.value);
|
77
|
+
}
|
78
|
+
};
|
79
|
+
|
80
|
+
makeSerializable(
|
81
|
+
CssExportDependency,
|
82
|
+
"webpack/lib/dependencies/CssExportDependency"
|
83
|
+
);
|
84
|
+
|
85
|
+
module.exports = CssExportDependency;
|
@@ -0,0 +1,75 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Ivan Kopeykin @vankop
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
9
|
+
const ModuleDependency = require("./ModuleDependency");
|
10
|
+
|
11
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
12
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
13
|
+
/** @typedef {import("../Dependency")} Dependency */
|
14
|
+
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
15
|
+
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
|
+
/** @typedef {import("../Module")} Module */
|
17
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
18
|
+
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
19
|
+
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
20
|
+
/** @typedef {import("../util/Hash")} Hash */
|
21
|
+
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
22
|
+
|
23
|
+
class CssImportDependency extends ModuleDependency {
|
24
|
+
/**
|
25
|
+
* @param {string} request request
|
26
|
+
* @param {[number, number]} range range of the argument
|
27
|
+
* @param {string | undefined} supports list of supports conditions
|
28
|
+
* @param {string | undefined} media list of media conditions
|
29
|
+
*/
|
30
|
+
constructor(request, range, supports, media) {
|
31
|
+
super(request);
|
32
|
+
this.range = range;
|
33
|
+
this.supports = supports;
|
34
|
+
this.media = media;
|
35
|
+
}
|
36
|
+
|
37
|
+
get type() {
|
38
|
+
return "css @import";
|
39
|
+
}
|
40
|
+
|
41
|
+
get category() {
|
42
|
+
return "css-import";
|
43
|
+
}
|
44
|
+
|
45
|
+
/**
|
46
|
+
* @param {string} context context directory
|
47
|
+
* @returns {Module} a module
|
48
|
+
*/
|
49
|
+
createIgnoredModule(context) {
|
50
|
+
return null;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
CssImportDependency.Template = class CssImportDependencyTemplate extends (
|
55
|
+
ModuleDependency.Template
|
56
|
+
) {
|
57
|
+
/**
|
58
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
59
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
60
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
61
|
+
* @returns {void}
|
62
|
+
*/
|
63
|
+
apply(dependency, source, templateContext) {
|
64
|
+
const dep = /** @type {CssImportDependency} */ (dependency);
|
65
|
+
|
66
|
+
source.replace(dep.range[0], dep.range[1] - 1, "");
|
67
|
+
}
|
68
|
+
};
|
69
|
+
|
70
|
+
makeSerializable(
|
71
|
+
CssImportDependency,
|
72
|
+
"webpack/lib/dependencies/CssImportDependency"
|
73
|
+
);
|
74
|
+
|
75
|
+
module.exports = CssImportDependency;
|
@@ -0,0 +1,119 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Ivan Kopeykin @vankop
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
9
|
+
const NullDependency = require("./NullDependency");
|
10
|
+
|
11
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
12
|
+
/** @typedef {import("../Dependency")} Dependency */
|
13
|
+
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
14
|
+
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
|
+
|
17
|
+
class CssLocalIdentifierDependency extends NullDependency {
|
18
|
+
/**
|
19
|
+
* @param {string} name name
|
20
|
+
* @param {[number, number]} range range
|
21
|
+
* @param {string=} prefix prefix
|
22
|
+
*/
|
23
|
+
constructor(name, range, prefix = "") {
|
24
|
+
super();
|
25
|
+
this.name = name;
|
26
|
+
this.range = range;
|
27
|
+
this.prefix = prefix;
|
28
|
+
}
|
29
|
+
|
30
|
+
get type() {
|
31
|
+
return "css local identifier";
|
32
|
+
}
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Returns the exported names
|
36
|
+
* @param {ModuleGraph} moduleGraph module graph
|
37
|
+
* @returns {ExportsSpec | undefined} export names
|
38
|
+
*/
|
39
|
+
getExports(moduleGraph) {
|
40
|
+
const name = this.name;
|
41
|
+
return {
|
42
|
+
exports: [
|
43
|
+
{
|
44
|
+
name,
|
45
|
+
canMangle: true
|
46
|
+
}
|
47
|
+
],
|
48
|
+
dependencies: undefined
|
49
|
+
};
|
50
|
+
}
|
51
|
+
|
52
|
+
serialize(context) {
|
53
|
+
const { write } = context;
|
54
|
+
write(this.name);
|
55
|
+
write(this.range);
|
56
|
+
write(this.prefix);
|
57
|
+
super.serialize(context);
|
58
|
+
}
|
59
|
+
|
60
|
+
deserialize(context) {
|
61
|
+
const { read } = context;
|
62
|
+
this.name = read();
|
63
|
+
this.range = read();
|
64
|
+
this.prefix = read();
|
65
|
+
super.deserialize(context);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
const escapeCssIdentifier = (str, omitUnderscore) => {
|
70
|
+
const escaped = `${str}`.replace(
|
71
|
+
// cspell:word uffff
|
72
|
+
/[^a-zA-Z0-9_\u0081-\uffff-]/g,
|
73
|
+
s => `\\${s}`
|
74
|
+
);
|
75
|
+
return !omitUnderscore && /^(?!--)[0-9-]/.test(escaped)
|
76
|
+
? `_${escaped}`
|
77
|
+
: escaped;
|
78
|
+
};
|
79
|
+
|
80
|
+
CssLocalIdentifierDependency.Template = class CssLocalIdentifierDependencyTemplate extends (
|
81
|
+
NullDependency.Template
|
82
|
+
) {
|
83
|
+
/**
|
84
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
85
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
86
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
87
|
+
* @returns {void}
|
88
|
+
*/
|
89
|
+
apply(
|
90
|
+
dependency,
|
91
|
+
source,
|
92
|
+
{ module, moduleGraph, chunkGraph, runtime, runtimeTemplate, cssExports }
|
93
|
+
) {
|
94
|
+
const dep = /** @type {CssLocalIdentifierDependency} */ (dependency);
|
95
|
+
const used = moduleGraph
|
96
|
+
.getExportInfo(module, dep.name)
|
97
|
+
.getUsedName(dep.name, runtime);
|
98
|
+
const moduleId = chunkGraph.getModuleId(module);
|
99
|
+
const identifier =
|
100
|
+
dep.prefix +
|
101
|
+
(runtimeTemplate.outputOptions.uniqueName
|
102
|
+
? runtimeTemplate.outputOptions.uniqueName + "-"
|
103
|
+
: "") +
|
104
|
+
(used ? moduleId + "-" + used : "-");
|
105
|
+
source.replace(
|
106
|
+
dep.range[0],
|
107
|
+
dep.range[1] - 1,
|
108
|
+
escapeCssIdentifier(identifier, dep.prefix)
|
109
|
+
);
|
110
|
+
if (used) cssExports.set(used, identifier);
|
111
|
+
}
|
112
|
+
};
|
113
|
+
|
114
|
+
makeSerializable(
|
115
|
+
CssLocalIdentifierDependency,
|
116
|
+
"webpack/lib/dependencies/CssLocalIdentifierDependency"
|
117
|
+
);
|
118
|
+
|
119
|
+
module.exports = CssLocalIdentifierDependency;
|
@@ -0,0 +1,101 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Ivan Kopeykin @vankop
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const Dependency = require("../Dependency");
|
9
|
+
const makeSerializable = require("../util/makeSerializable");
|
10
|
+
const CssLocalIdentifierDependency = require("./CssLocalIdentifierDependency");
|
11
|
+
|
12
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
13
|
+
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
14
|
+
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
15
|
+
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
16
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
|
+
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
18
|
+
|
19
|
+
class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency {
|
20
|
+
/**
|
21
|
+
* @param {string} name name
|
22
|
+
* @param {[number, number]} range range
|
23
|
+
* @param {string=} prefix prefix
|
24
|
+
* @param {Set<string>=} declaredSet set of declared names (will only be active when in declared set)
|
25
|
+
*/
|
26
|
+
constructor(name, range, prefix = "", declaredSet = undefined) {
|
27
|
+
super(name, range, prefix);
|
28
|
+
this.declaredSet = declaredSet;
|
29
|
+
}
|
30
|
+
|
31
|
+
get type() {
|
32
|
+
return "css self local identifier";
|
33
|
+
}
|
34
|
+
|
35
|
+
get category() {
|
36
|
+
return "self";
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* @returns {string | null} an identifier to merge equal requests
|
41
|
+
*/
|
42
|
+
getResourceIdentifier() {
|
43
|
+
return `self`;
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Returns the exported names
|
47
|
+
* @param {ModuleGraph} moduleGraph module graph
|
48
|
+
* @returns {ExportsSpec | undefined} export names
|
49
|
+
*/
|
50
|
+
getExports(moduleGraph) {
|
51
|
+
if (this.declaredSet && !this.declaredSet.has(this.name)) return;
|
52
|
+
return super.getExports(moduleGraph);
|
53
|
+
}
|
54
|
+
|
55
|
+
/**
|
56
|
+
* Returns list of exports referenced by this dependency
|
57
|
+
* @param {ModuleGraph} moduleGraph module graph
|
58
|
+
* @param {RuntimeSpec} runtime the runtime for which the module is analysed
|
59
|
+
* @returns {(string[] | ReferencedExport)[]} referenced exports
|
60
|
+
*/
|
61
|
+
getReferencedExports(moduleGraph, runtime) {
|
62
|
+
if (this.declaredSet && !this.declaredSet.has(this.name))
|
63
|
+
return Dependency.NO_EXPORTS_REFERENCED;
|
64
|
+
return [[this.name]];
|
65
|
+
}
|
66
|
+
|
67
|
+
serialize(context) {
|
68
|
+
const { write } = context;
|
69
|
+
write(this.declaredSet);
|
70
|
+
super.serialize(context);
|
71
|
+
}
|
72
|
+
|
73
|
+
deserialize(context) {
|
74
|
+
const { read } = context;
|
75
|
+
this.declaredSet = read();
|
76
|
+
super.deserialize(context);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
CssSelfLocalIdentifierDependency.Template = class CssSelfLocalIdentifierDependencyTemplate extends (
|
81
|
+
CssLocalIdentifierDependency.Template
|
82
|
+
) {
|
83
|
+
/**
|
84
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
85
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
86
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
87
|
+
* @returns {void}
|
88
|
+
*/
|
89
|
+
apply(dependency, source, templateContext) {
|
90
|
+
const dep = /** @type {CssSelfLocalIdentifierDependency} */ (dependency);
|
91
|
+
if (dep.declaredSet && !dep.declaredSet.has(dep.name)) return;
|
92
|
+
super.apply(dependency, source, templateContext);
|
93
|
+
}
|
94
|
+
};
|
95
|
+
|
96
|
+
makeSerializable(
|
97
|
+
CssSelfLocalIdentifierDependency,
|
98
|
+
"webpack/lib/dependencies/CssSelfLocalIdentifierDependency"
|
99
|
+
);
|
100
|
+
|
101
|
+
module.exports = CssSelfLocalIdentifierDependency;
|
@@ -0,0 +1,132 @@
|
|
1
|
+
/*
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
3
|
+
Author Ivan Kopeykin @vankop
|
4
|
+
*/
|
5
|
+
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
const makeSerializable = require("../util/makeSerializable");
|
9
|
+
const memoize = require("../util/memoize");
|
10
|
+
const ModuleDependency = require("./ModuleDependency");
|
11
|
+
|
12
|
+
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
13
|
+
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
14
|
+
/** @typedef {import("../Dependency")} Dependency */
|
15
|
+
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
16
|
+
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
17
|
+
/** @typedef {import("../Module")} Module */
|
18
|
+
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
19
|
+
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
20
|
+
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
21
|
+
/** @typedef {import("../util/Hash")} Hash */
|
22
|
+
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
23
|
+
|
24
|
+
const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
|
25
|
+
|
26
|
+
class CssUrlDependency extends ModuleDependency {
|
27
|
+
/**
|
28
|
+
* @param {string} request request
|
29
|
+
* @param {[number, number]} range range of the argument
|
30
|
+
* @param {string} cssFunctionKind kind of css function, e. g. url(), image()
|
31
|
+
*/
|
32
|
+
constructor(request, range, cssFunctionKind) {
|
33
|
+
super(request);
|
34
|
+
this.range = range;
|
35
|
+
this.cssFunctionKind = cssFunctionKind;
|
36
|
+
}
|
37
|
+
|
38
|
+
get type() {
|
39
|
+
return "css url()";
|
40
|
+
}
|
41
|
+
|
42
|
+
get category() {
|
43
|
+
return "url";
|
44
|
+
}
|
45
|
+
|
46
|
+
/**
|
47
|
+
* @param {string} context context directory
|
48
|
+
* @returns {Module} a module
|
49
|
+
*/
|
50
|
+
createIgnoredModule(context) {
|
51
|
+
const RawDataUrlModule = getRawDataUrlModule();
|
52
|
+
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
53
|
+
}
|
54
|
+
|
55
|
+
serialize(context) {
|
56
|
+
const { write } = context;
|
57
|
+
write(this.cssFunctionKind);
|
58
|
+
super.serialize(context);
|
59
|
+
}
|
60
|
+
|
61
|
+
deserialize(context) {
|
62
|
+
const { read } = context;
|
63
|
+
this.cssFunctionKind = read();
|
64
|
+
super.deserialize(context);
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
const cssEscapeString = str => {
|
69
|
+
let countWhiteOrBracket = 0;
|
70
|
+
let countQuotation = 0;
|
71
|
+
let countApostrophe = 0;
|
72
|
+
for (let i = 0; i < str.length; i++) {
|
73
|
+
const cc = str.charCodeAt(i);
|
74
|
+
switch (cc) {
|
75
|
+
case 9: // tab
|
76
|
+
case 10: // nl
|
77
|
+
case 32: // space
|
78
|
+
case 40: // (
|
79
|
+
case 41: // )
|
80
|
+
countWhiteOrBracket++;
|
81
|
+
break;
|
82
|
+
case 34:
|
83
|
+
countQuotation++;
|
84
|
+
break;
|
85
|
+
case 39:
|
86
|
+
countApostrophe++;
|
87
|
+
break;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
if (countWhiteOrBracket < 2) {
|
91
|
+
return str.replace(/[\n\t ()'"\\]/g, m => `\\${m}`);
|
92
|
+
} else if (countQuotation <= countApostrophe) {
|
93
|
+
return `"${str.replace(/[\n"\\]/g, m => `\\${m}`)}"`;
|
94
|
+
} else {
|
95
|
+
return `'${str.replace(/[\n'\\]/g, m => `\\${m}`)}'`;
|
96
|
+
}
|
97
|
+
};
|
98
|
+
|
99
|
+
CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
100
|
+
ModuleDependency.Template
|
101
|
+
) {
|
102
|
+
/**
|
103
|
+
* @param {Dependency} dependency the dependency for which the template should be applied
|
104
|
+
* @param {ReplaceSource} source the current replace source which can be modified
|
105
|
+
* @param {DependencyTemplateContext} templateContext the context object
|
106
|
+
* @returns {void}
|
107
|
+
*/
|
108
|
+
apply(
|
109
|
+
dependency,
|
110
|
+
source,
|
111
|
+
{ runtime, moduleGraph, runtimeTemplate, codeGenerationResults }
|
112
|
+
) {
|
113
|
+
const dep = /** @type {CssUrlDependency} */ (dependency);
|
114
|
+
|
115
|
+
source.replace(
|
116
|
+
dep.range[0],
|
117
|
+
dep.range[1] - 1,
|
118
|
+
`${dep.cssFunctionKind}(${cssEscapeString(
|
119
|
+
runtimeTemplate.assetUrl({
|
120
|
+
publicPath: "",
|
121
|
+
runtime,
|
122
|
+
module: moduleGraph.getModule(dep),
|
123
|
+
codeGenerationResults
|
124
|
+
})
|
125
|
+
)})`
|
126
|
+
);
|
127
|
+
}
|
128
|
+
};
|
129
|
+
|
130
|
+
makeSerializable(CssUrlDependency, "webpack/lib/dependencies/CssUrlDependency");
|
131
|
+
|
132
|
+
module.exports = CssUrlDependency;
|
@@ -46,6 +46,12 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
|
|
46
46
|
}
|
47
47
|
}
|
48
48
|
switch (property) {
|
49
|
+
case "canMangle": {
|
50
|
+
const exportsInfo = moduleGraph.getExportsInfo(module);
|
51
|
+
const exportInfo = exportsInfo.getExportInfo(exportName);
|
52
|
+
if (exportInfo) return exportInfo.canMangle;
|
53
|
+
return exportsInfo.otherExportsInfo.canMangle;
|
54
|
+
}
|
49
55
|
case "used":
|
50
56
|
return (
|
51
57
|
moduleGraph.getExportsInfo(module).getUsed(exportName, runtime) !==
|