webpack 5.71.0 → 5.73.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.

Files changed (47) hide show
  1. package/lib/BannerPlugin.js +3 -1
  2. package/lib/ChunkGraph.js +93 -6
  3. package/lib/Compilation.js +5 -1
  4. package/lib/Compiler.js +1 -1
  5. package/lib/DllReferencePlugin.js +1 -1
  6. package/lib/ExportsInfo.js +1 -1
  7. package/lib/Module.js +1 -0
  8. package/lib/NodeStuffPlugin.js +1 -1
  9. package/lib/NormalModule.js +4 -3
  10. package/lib/RuntimePlugin.js +7 -0
  11. package/lib/asset/AssetGenerator.js +36 -9
  12. package/lib/asset/AssetParser.js +1 -0
  13. package/lib/asset/AssetSourceGenerator.js +31 -6
  14. package/lib/asset/AssetSourceParser.js +1 -0
  15. package/lib/cache/PackFileCacheStrategy.js +8 -4
  16. package/lib/config/defaults.js +12 -4
  17. package/lib/container/RemoteRuntimeModule.js +8 -7
  18. package/lib/dependencies/CommonJsImportsParserPlugin.js +342 -61
  19. package/lib/dependencies/CommonJsRequireContextDependency.js +2 -2
  20. package/lib/dependencies/CommonJsRequireDependency.js +2 -1
  21. package/lib/dependencies/ContextDependency.js +15 -2
  22. package/lib/dependencies/ContextDependencyHelpers.js +18 -5
  23. package/lib/dependencies/ContextElementDependency.js +0 -16
  24. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +35 -3
  25. package/lib/dependencies/ImportParserPlugin.js +31 -25
  26. package/lib/dependencies/JsonExportsDependency.js +17 -21
  27. package/lib/dependencies/LoaderDependency.js +13 -0
  28. package/lib/dependencies/LoaderImportDependency.js +13 -0
  29. package/lib/dependencies/ModuleDependency.js +11 -1
  30. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  31. package/lib/dependencies/RequireResolveDependency.js +2 -1
  32. package/lib/dependencies/URLPlugin.js +21 -0
  33. package/lib/index.js +1 -0
  34. package/lib/javascript/JavascriptParser.js +40 -19
  35. package/lib/json/JsonData.js +8 -0
  36. package/lib/json/JsonParser.js +4 -6
  37. package/lib/optimize/ConcatenatedModule.js +2 -1
  38. package/lib/optimize/ModuleConcatenationPlugin.js +21 -2
  39. package/lib/runtime/AsyncModuleRuntimeModule.js +34 -58
  40. package/lib/runtime/NonceRuntimeModule.js +24 -0
  41. package/lib/sharing/ProvideSharedPlugin.js +1 -2
  42. package/package.json +3 -3
  43. package/schemas/WebpackOptions.check.js +1 -1
  44. package/schemas/WebpackOptions.json +37 -0
  45. package/schemas/plugins/BannerPlugin.check.js +1 -1
  46. package/schemas/plugins/BannerPlugin.json +4 -0
  47. package/types.d.ts +51 -3
@@ -20,12 +20,13 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
20
20
  const { runtimeTemplate } = this.compilation;
21
21
  const fn = RuntimeGlobals.asyncModule;
22
22
  return Template.asString([
23
- 'var webpackThen = typeof Symbol === "function" ? Symbol("webpack then") : "__webpack_then__";',
23
+ 'var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__";',
24
24
  'var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__";',
25
25
  'var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__";',
26
- `var completeQueue = ${runtimeTemplate.basicFunction("queue", [
27
- "if(queue) {",
26
+ `var resolveQueue = ${runtimeTemplate.basicFunction("queue", [
27
+ "if(queue && !queue.d) {",
28
28
  Template.indent([
29
+ "queue.d = 1;",
29
30
  `queue.forEach(${runtimeTemplate.expressionFunction(
30
31
  "fn.r--",
31
32
  "fn"
@@ -37,35 +38,26 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
37
38
  ]),
38
39
  "}"
39
40
  ])}`,
40
- `var completeFunction = ${runtimeTemplate.expressionFunction(
41
- "!--fn.r && fn()",
42
- "fn"
43
- )};`,
44
- `var queueFunction = ${runtimeTemplate.expressionFunction(
45
- "queue ? queue.push(fn) : completeFunction(fn)",
46
- "queue, fn"
47
- )};`,
48
41
  `var wrapDeps = ${runtimeTemplate.returningFunction(
49
42
  `deps.map(${runtimeTemplate.basicFunction("dep", [
50
43
  'if(dep !== null && typeof dep === "object") {',
51
44
  Template.indent([
52
- "if(dep[webpackThen]) return dep;",
45
+ "if(dep[webpackQueues]) return dep;",
53
46
  "if(dep.then) {",
54
47
  Template.indent([
55
48
  "var queue = [];",
49
+ "queue.d = 0;",
56
50
  `dep.then(${runtimeTemplate.basicFunction("r", [
57
51
  "obj[webpackExports] = r;",
58
- "completeQueue(queue);",
59
- "queue = 0;"
52
+ "resolveQueue(queue);"
60
53
  ])}, ${runtimeTemplate.basicFunction("e", [
61
54
  "obj[webpackError] = e;",
62
- "completeQueue(queue);",
63
- "queue = 0;"
55
+ "resolveQueue(queue);"
64
56
  ])});`,
65
57
  "var obj = {};",
66
- `obj[webpackThen] = ${runtimeTemplate.expressionFunction(
67
- "queueFunction(queue, fn), dep['catch'](reject)",
68
- "fn, reject"
58
+ `obj[webpackQueues] = ${runtimeTemplate.expressionFunction(
59
+ `fn(queue)`,
60
+ "fn"
69
61
  )};`,
70
62
  "return obj;"
71
63
  ]),
@@ -73,55 +65,31 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
73
65
  ]),
74
66
  "}",
75
67
  "var ret = {};",
76
- `ret[webpackThen] = ${runtimeTemplate.expressionFunction(
77
- "completeFunction(fn)",
78
- "fn"
79
- )};`,
68
+ `ret[webpackQueues] = ${runtimeTemplate.emptyFunction()};`,
80
69
  "ret[webpackExports] = dep;",
81
70
  "return ret;"
82
71
  ])})`,
83
72
  "deps"
84
73
  )};`,
85
74
  `${fn} = ${runtimeTemplate.basicFunction("module, body, hasAwait", [
86
- "var queue = hasAwait && [];",
75
+ "var queue;",
76
+ "hasAwait && ((queue = []).d = 1);",
77
+ "if(queue) queue.moduleId = module.id;",
78
+ "var depQueues = new Set();",
87
79
  "var exports = module.exports;",
88
80
  "var currentDeps;",
89
81
  "var outerResolve;",
90
82
  "var reject;",
91
- "var isEvaluating = true;",
92
- "var nested = false;",
93
- `var whenAll = ${runtimeTemplate.basicFunction(
94
- "deps, onResolve, onReject",
95
- [
96
- "if (nested) return;",
97
- "nested = true;",
98
- "onResolve.r += deps.length;",
99
- `deps.map(${runtimeTemplate.expressionFunction(
100
- "dep[webpackThen](onResolve, onReject)",
101
- "dep, i"
102
- )});`,
103
- "nested = false;"
104
- ]
105
- )};`,
106
83
  `var promise = new Promise(${runtimeTemplate.basicFunction(
107
84
  "resolve, rej",
108
- [
109
- "reject = rej;",
110
- `outerResolve = ${runtimeTemplate.expressionFunction(
111
- "resolve(exports), completeQueue(queue), queue = 0"
112
- )};`
113
- ]
85
+ ["reject = rej;", "outerResolve = resolve;"]
114
86
  )});`,
115
87
  "promise[webpackExports] = exports;",
116
- `promise[webpackThen] = ${runtimeTemplate.basicFunction(
117
- "fn, rejectFn",
118
- [
119
- "if (isEvaluating) { return completeFunction(fn); }",
120
- "if (currentDeps) whenAll(currentDeps, fn, rejectFn);",
121
- "queueFunction(queue, fn);",
122
- "promise['catch'](rejectFn);"
123
- ]
88
+ `promise[webpackQueues] = ${runtimeTemplate.expressionFunction(
89
+ `queue && fn(queue), depQueues.forEach(fn), promise["catch"](${runtimeTemplate.emptyFunction()})`,
90
+ "fn"
124
91
  )};`,
92
+ "promise.moduleId = module.id;",
125
93
  "module.exports = promise;",
126
94
  `body(${runtimeTemplate.basicFunction("deps", [
127
95
  "currentDeps = wrapDeps(deps);",
@@ -133,21 +101,29 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
133
101
  ])})`
134
102
  )}`,
135
103
  `var promise = new Promise(${runtimeTemplate.basicFunction(
136
- "resolve, reject",
104
+ "resolve",
137
105
  [
138
106
  `fn = ${runtimeTemplate.expressionFunction(
139
- "resolve(getResult)"
107
+ "resolve(getResult)",
108
+ ""
140
109
  )};`,
141
110
  "fn.r = 0;",
142
- "whenAll(currentDeps, fn, reject);"
111
+ `var fnQueue = ${runtimeTemplate.expressionFunction(
112
+ "q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)))",
113
+ "q"
114
+ )};`,
115
+ `currentDeps.map(${runtimeTemplate.expressionFunction(
116
+ "dep[webpackQueues](fnQueue)",
117
+ "dep"
118
+ )});`
143
119
  ]
144
120
  )});`,
145
121
  "return fn.r ? promise : getResult();"
146
122
  ])}, ${runtimeTemplate.expressionFunction(
147
- "err && reject(promise[webpackError] = err), outerResolve()",
123
+ "(err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)",
148
124
  "err"
149
125
  )});`,
150
- "isEvaluating = false;"
126
+ "queue && (queue.d = 0);"
151
127
  ])};`
152
128
  ]);
153
129
  }
@@ -0,0 +1,24 @@
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 RuntimeGlobals = require("../RuntimeGlobals");
9
+ const RuntimeModule = require("../RuntimeModule");
10
+
11
+ class NonceRuntimeModule extends RuntimeModule {
12
+ constructor() {
13
+ super("nonce", RuntimeModule.STAGE_ATTACH);
14
+ }
15
+
16
+ /**
17
+ * @returns {string} runtime code
18
+ */
19
+ generate() {
20
+ return `${RuntimeGlobals.scriptNonce} = undefined;`;
21
+ }
22
+ }
23
+
24
+ module.exports = NonceRuntimeModule;
@@ -129,8 +129,7 @@ class ProvideSharedPlugin {
129
129
  details =
130
130
  "No description file (usually package.json) found. Add description file with name and version, or manually specify version in shared config.";
131
131
  } else if (!descriptionFileData.version) {
132
- details =
133
- "No version in description file (usually package.json). Add version to description file, or manually specify version in shared config.";
132
+ details = `No version in description file (usually package.json). Add version to description file ${resourceResolveData.descriptionFilePath}, or manually specify version in shared config.`;
134
133
  } else {
135
134
  version = descriptionFileData.version;
136
135
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpack",
3
- "version": "5.71.0",
3
+ "version": "5.73.0",
4
4
  "author": "Tobias Koppers @sokra",
5
5
  "description": "Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.",
6
6
  "license": "MIT",
@@ -14,13 +14,13 @@
14
14
  "acorn-import-assertions": "^1.7.6",
15
15
  "browserslist": "^4.14.5",
16
16
  "chrome-trace-event": "^1.0.2",
17
- "enhanced-resolve": "^5.9.2",
17
+ "enhanced-resolve": "^5.9.3",
18
18
  "es-module-lexer": "^0.9.0",
19
19
  "eslint-scope": "5.1.1",
20
20
  "events": "^3.2.0",
21
21
  "glob-to-regexp": "^0.4.1",
22
22
  "graceful-fs": "^4.2.9",
23
- "json-parse-better-errors": "^1.0.2",
23
+ "json-parse-even-better-errors": "^2.3.1",
24
24
  "loader-runner": "^4.2.0",
25
25
  "mime-types": "^2.1.27",
26
26
  "neo-async": "^2.6.2",