webpack 5.65.0 → 5.68.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 +1 -1
- package/lib/APIPlugin.js +33 -0
- package/lib/Cache.js +1 -1
- package/lib/CacheFacade.js +4 -11
- package/lib/Chunk.js +2 -0
- package/lib/CleanPlugin.js +1 -1
- package/lib/Compilation.js +91 -47
- package/lib/Compiler.js +57 -3
- package/lib/ContextModule.js +21 -17
- package/lib/DelegatedModule.js +1 -1
- package/lib/Dependency.js +10 -0
- package/lib/DependencyTemplate.js +9 -0
- package/lib/DependencyTemplates.js +1 -1
- package/lib/DllModule.js +1 -1
- package/lib/EvalDevToolModulePlugin.js +16 -1
- package/lib/EvalSourceMapDevToolPlugin.js +18 -1
- package/lib/ExternalModule.js +93 -53
- package/lib/ExternalModuleFactoryPlugin.js +1 -1
- package/lib/FileSystemInfo.js +29 -25
- package/lib/Generator.js +2 -0
- package/lib/HookWebpackError.js +1 -1
- package/lib/Module.js +25 -4
- package/lib/ModuleFilenameHelpers.js +5 -1
- package/lib/MultiCompiler.js +1 -1
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +9 -5
- package/lib/RawModule.js +1 -1
- package/lib/RuntimeGlobals.js +29 -1
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +50 -0
- package/lib/RuntimeTemplate.js +21 -0
- package/lib/Template.js +2 -1
- package/lib/Watching.js +2 -2
- package/lib/WebpackOptionsApply.js +43 -2
- package/lib/asset/AssetGenerator.js +64 -24
- package/lib/asset/AssetModulesPlugin.js +3 -0
- package/lib/asset/RawDataUrlModule.js +148 -0
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
- package/lib/cache/ResolverCachePlugin.js +1 -1
- package/lib/cli.js +44 -3
- package/lib/config/defaults.js +79 -5
- package/lib/config/normalization.js +5 -0
- package/lib/container/ContainerEntryModule.js +4 -2
- package/lib/container/FallbackModule.js +4 -4
- package/lib/container/RemoteModule.js +4 -2
- package/lib/css/CssExportsGenerator.js +139 -0
- package/lib/css/CssGenerator.js +109 -0
- package/lib/css/CssLoadingRuntimeModule.js +447 -0
- package/lib/css/CssModulesPlugin.js +461 -0
- package/lib/css/CssParser.js +618 -0
- package/lib/css/walkCssTokens.js +659 -0
- package/lib/debug/ProfilingPlugin.js +12 -10
- 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/HarmonyCompatibilityDependency.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +22 -3
- package/lib/dependencies/LoaderPlugin.js +2 -2
- package/lib/dependencies/URLDependency.js +3 -8
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +1 -1
- package/lib/hmr/LazyCompilationPlugin.js +45 -21
- package/lib/hmr/lazyCompilationBackend.js +4 -2
- package/lib/ids/DeterministicModuleIdsPlugin.js +55 -35
- package/lib/ids/HashedModuleIdsPlugin.js +9 -12
- package/lib/ids/IdHelpers.js +24 -10
- 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 +5 -0
- package/lib/javascript/JavascriptGenerator.js +1 -0
- package/lib/javascript/StartupHelpers.js +3 -3
- package/lib/library/AssignLibraryPlugin.js +26 -3
- package/lib/library/EnableLibraryPlugin.js +11 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +1 -1
- package/lib/node/RequireChunkLoadingRuntimeModule.js +1 -1
- package/lib/optimize/ConcatenatedModule.js +11 -5
- package/lib/runtime/AsyncModuleRuntimeModule.js +25 -15
- package/lib/runtime/CreateScriptRuntimeModule.js +36 -0
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +9 -34
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +76 -0
- package/lib/schemes/HttpUriPlugin.js +8 -8
- package/lib/sharing/ConsumeSharedModule.js +4 -2
- package/lib/sharing/ProvideSharedModule.js +4 -2
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +112 -67
- package/lib/stats/DefaultStatsPrinterPlugin.js +88 -23
- package/lib/util/ArrayHelpers.js +18 -4
- package/lib/util/AsyncQueue.js +1 -1
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/internalSerializables.js +11 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +9 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -2
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -11
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +4 -11
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +96 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/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/types.d.ts +249 -39
@@ -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;
|
@@ -74,14 +74,14 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
74
74
|
initFragments.push(
|
75
75
|
new InitFragment(
|
76
76
|
runtimeTemplate.supportsArrowFunction()
|
77
|
-
? `${RuntimeGlobals.asyncModule}(${module.moduleArgument}, async (__webpack_handle_async_dependencies__) => {\n`
|
78
|
-
: `${RuntimeGlobals.asyncModule}(${module.moduleArgument}, async function (__webpack_handle_async_dependencies__) {\n`,
|
77
|
+
? `${RuntimeGlobals.asyncModule}(${module.moduleArgument}, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n`
|
78
|
+
: `${RuntimeGlobals.asyncModule}(${module.moduleArgument}, async function (__webpack_handle_async_dependencies__, __webpack_async_result__) { try {\n`,
|
79
79
|
InitFragment.STAGE_ASYNC_BOUNDARY,
|
80
80
|
0,
|
81
81
|
undefined,
|
82
|
-
|
83
|
-
?
|
84
|
-
|
82
|
+
`\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } }${
|
83
|
+
module.buildMeta.async ? ", 1" : ""
|
84
|
+
});`
|
85
85
|
)
|
86
86
|
);
|
87
87
|
}
|
@@ -20,6 +20,7 @@ const propertyAccess = require("../util/propertyAccess");
|
|
20
20
|
const ConstDependency = require("./ConstDependency");
|
21
21
|
|
22
22
|
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
23
|
+
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
23
24
|
/** @typedef {import("../Compiler")} Compiler */
|
24
25
|
/** @typedef {import("../NormalModule")} NormalModule */
|
25
26
|
/** @typedef {import("../javascript/JavascriptParser")} Parser */
|
@@ -44,11 +45,29 @@ class ImportMetaPlugin {
|
|
44
45
|
return pathToFileURL(module.resource).toString();
|
45
46
|
};
|
46
47
|
/**
|
47
|
-
* @param {Parser} parser parser
|
48
|
-
* @param {
|
48
|
+
* @param {Parser} parser parser parser
|
49
|
+
* @param {JavascriptParserOptions} parserOptions parserOptions
|
49
50
|
* @returns {void}
|
50
51
|
*/
|
51
|
-
const parserHandler = (parser,
|
52
|
+
const parserHandler = (parser, { importMeta }) => {
|
53
|
+
if (importMeta === false) {
|
54
|
+
const { importMetaName } = compilation.outputOptions;
|
55
|
+
if (importMetaName === "import.meta") return;
|
56
|
+
|
57
|
+
parser.hooks.expression
|
58
|
+
.for("import.meta")
|
59
|
+
.tap("ImportMetaPlugin", metaProperty => {
|
60
|
+
const dep = new ConstDependency(
|
61
|
+
importMetaName,
|
62
|
+
metaProperty.range
|
63
|
+
);
|
64
|
+
dep.loc = metaProperty.loc;
|
65
|
+
parser.state.module.addPresentationalDependency(dep);
|
66
|
+
return true;
|
67
|
+
});
|
68
|
+
return;
|
69
|
+
}
|
70
|
+
|
52
71
|
/// import.meta direct ///
|
53
72
|
parser.hooks.typeof
|
54
73
|
.for("import.meta")
|
@@ -16,7 +16,7 @@ const LoaderImportDependency = require("./LoaderImportDependency");
|
|
16
16
|
|
17
17
|
/**
|
18
18
|
* @callback LoadModuleCallback
|
19
|
-
* @param {Error=} err error object
|
19
|
+
* @param {(Error | null)=} err error object
|
20
20
|
* @param {string | Buffer=} source source code
|
21
21
|
* @param {object=} map source map
|
22
22
|
* @param {Module=} module loaded module if successful
|
@@ -24,7 +24,7 @@ const LoaderImportDependency = require("./LoaderImportDependency");
|
|
24
24
|
|
25
25
|
/**
|
26
26
|
* @callback ImportModuleCallback
|
27
|
-
* @param {Error=} err error object
|
27
|
+
* @param {(Error | null)=} err error object
|
28
28
|
* @param {any=} exports exports of the evaluated module
|
29
29
|
*/
|
30
30
|
|
@@ -25,7 +25,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
25
25
|
/** @typedef {import("../util/Hash")} Hash */
|
26
26
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
27
27
|
|
28
|
-
const
|
28
|
+
const getRawDataUrlModule = memoize(() => require("../asset/RawDataUrlModule"));
|
29
29
|
|
30
30
|
class URLDependency extends ModuleDependency {
|
31
31
|
/**
|
@@ -68,13 +68,8 @@ class URLDependency extends ModuleDependency {
|
|
68
68
|
* @returns {Module} a module
|
69
69
|
*/
|
70
70
|
createIgnoredModule(context) {
|
71
|
-
const
|
72
|
-
return new
|
73
|
-
'module.exports = "data:,";',
|
74
|
-
`ignored-asset`,
|
75
|
-
`(ignored asset)`,
|
76
|
-
new Set([RuntimeGlobals.module])
|
77
|
-
);
|
71
|
+
const RawDataUrlModule = getRawDataUrlModule();
|
72
|
+
return new RawDataUrlModule("data:,", `ignored-asset`, `(ignored asset)`);
|
78
73
|
}
|
79
74
|
|
80
75
|
serialize(context) {
|
@@ -81,7 +81,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
|
|
81
81
|
);
|
82
82
|
const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasJs);
|
83
83
|
const hasJsMatcher = compileBooleanMatcher(conditionMap);
|
84
|
-
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph);
|
84
|
+
const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
|
85
85
|
|
86
86
|
const outputName = this.compilation.getPath(
|
87
87
|
getChunkFilenameTemplate(chunk, this.compilation.outputOptions),
|